Rails&Deviseをベースとしたシステムを持ち、アプリを開発する場合、JSONを使って、APIで様々な処理を実装していくこととなります。
ログインについては簡単ですが、ログアウト処理の情報が少なく困りましたので、参考コードをここに載せておきます。ログアウト処理もきちんと実装しておかないと、Sessionが残ったままで、別のメールアドレス&パスワードの組み合わせを投げても、以前のユーザー情報が返ってきますので、注意が必要です。
/controllers/api/sessions_controller.rbの作成
DeviseのSessionsControllerを継承します。iOS側から、user_idをパラメータとしてうけて、sign_out処理を実装しています。セキュリティなど必要な処理は、別途加えてください。
class Api::SessionsController < Devise::SessionsController
respond_to :json
def destroy
user = User.find(params[:user_id)
if sign_out(user)
render :json => {success: true}
else
render :json => {success: false}
end
end
end
route.rbの設定
namespace :api do
devise_for :users
end
これで、deviseがapiディレクトリの中で動くようになります。
iOS側からAPI通信
http://www.hogehoge.com/api/users/sign_out
にiOS側に保存してあるUser Idをパラメータにして投げる。
すると、サインアウト処理が行われるので、同じデバイスから別のユーザーでのログインなどができるようになります。
※間違いや足りないところがあれば指摘してください。よろしくお願いします。