作成中の iOS アプリでユーザー資格情報が正しく提供されているかどうかを簡単に判断できるようにしたいと考えています。
私が今セットアップした方法は、ユーザートークンを処理して返す sessions_controller.rb を使用することです。問題は、Web 経由でログオンしたい場合 (curl などによるチェックだけでなく)、認証されずに吐き出されることです。
{"success":false,"message":"ログインまたはパスワードのエラー"}
だから私の質問は...どうすれば認証を行い、Webログインを引き続き機能させることができますか? ここに私の関連ファイルがあります。私の希望は、localhost:3000/auth_checks などの URL にカールして、1 種類の認証応答を取得し、引き続きユーザーが localhost:3000/sign_in からログインできるようにすることでした。
Devise.rb より
config.skip_session_storage = [:http_auth, :token_auth]
config.token_authentication_key = :auth_token
routes.rb から
resources :clippings
root to: 'clippings#index'
#devise_for :users
resources :auth_checks
devise_for(:users, :controllers => { :sessions => "sessions" })
resources :posts do
end
auth_checks_controller.rb より
class AuthChecksController < ApplicationController
before_filter :authenticate_user!
# GET /auth_checks
# GET /auth_checks.json
def index
@auth_checks = AuthCheck.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @auth_checks }
end
end
# GET /auth_checks/1
# GET /auth_checks/1.json
def show
@auth_check = AuthCheck.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @auth_check }
end
end
# GET /auth_checks/new
# GET /auth_checks/new.json
def new
@auth_check = AuthCheck.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @auth_check }
end
end
# GET /auth_checks/1/edit
def edit
@auth_check = AuthCheck.find(params[:id])
end
# POST /auth_checks
# POST /auth_checks.json
def create
@auth_check = AuthCheck.new(params[:auth_check])
respond_to do |format|
if @auth_check.save
format.html { redirect_to @auth_check, notice: 'Auth check was successfully created.' }
format.json { render json: @auth_check, status: :created, location: @auth_check }
else
format.html { render action: "new" }
format.json { render json: @auth_check.errors, status: :unprocessable_entity }
end
end
end
# PUT /auth_checks/1
# PUT /auth_checks/1.json
def update
@auth_check = AuthCheck.find(params[:id])
respond_to do |format|
if @auth_check.update_attributes(params[:auth_check])
format.html { redirect_to @auth_check, notice: 'Auth check was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @auth_check.errors, status: :unprocessable_entity }
end
end
end
# DELETE /auth_checks/1
# DELETE /auth_checks/1.json
def destroy
@auth_check = AuthCheck.find(params[:id])
@auth_check.destroy
respond_to do |format|
format.html { redirect_to auth_checks_url }
format.json { head :no_content }
end
end
end