##概要
Rails5のAPIモードで、Unityで作成しているiOSクライアントサイドで作成したユーザーの保存やセッションの管理を行いたいと考えております。
認証方法としてアクセストークンをクライアントに渡して、それをクライアントのリクエストヘッダーに"Authentication"という形で付与することでアクセストークンを実現したいと考えていますが、通信を学び始めて日が浅く、
最初にクライアント側に生成された情報を渡す方法とタイミングがわかりません。
ログインをした後、生成された情報をクライアント側で利用するにはどのようにすれば良いのでしょうか。こちらについてご教示願えますと幸いです。
##補足
主にRails側でSessions#createでログインを行なったタイミングでログインしたユーザーの情報をjsonで```
sign_in :user, @user
render json: @user, serializer: SessionSerializer, root: :show
``
のように出力し、その情報をクッキーのような形(ブラウザではありませんが)で保持したい。
トークン認証はサインアップやログイン以外の処理で行う。
##疑問点
・セッションをどのように渡せば良いか?
・ユーザー情報を渡す処理をどのメソッドの中に書けば良いか(どのタイミングでユーザー渡すべきなのか)?
以上について何卒ご教示願えますと幸いです。
##コード
(ログイン機能)Rails app/controllers/sessions#create
class SessionsController < ApplicationController skip_before_action :authenticate_user_from_token! def create @user = User.find_for_database_authentication(name: params[:name]) return invalid_name unless @user if @user.valid_password?(params[:password]) sign_in :user, @user render json: @user, serializer: SessionSerializer, root: :show response.headers['Content-Type'] = 'application/json' else invalid_password end end
(ログインしたユーザー情報をJSONで出力)
app/Serializer/SessionSerializer
class SessionSerializer < ActiveModel::Serializer attributes :name, :user_id, :token_type, :access_token def user_id object.id end def token_type 'Bearer' end end
(クライアント側でGET通信する場合)Sessions#show
def show request.headers.to_hash @user = User.find_by(name: params[:name]) render json: @user, serializer: SessionSerializer, root: nil end
##参照サイト
リンク内容
こちらのトークン認証を参考にしています。これにクライアントにユーザー情報を送る処理をどこかに追加するイメージです。
あなたの回答
tips
プレビュー