ここでこの奇妙な状況に遭遇しました。Rails バックエンド API 用の JavaScript ベースのフロントエンドを開発しました。
ユーザー名とパスワードを投稿するログインフォームがあり、データベースに保存されてTokensController
いるものを返します。authentication_token
このトークンは Cookie に保存され、すべてのフォームで送信されます。
今、ログアウト機能を実装したいと思いました。そのため、Cookie を削除して、リクエストでトークンが送信されないようにします。(または間違ったもの。この場合、ヘッダーはAuthentication: Token token="undefined"
)
200 OK
それでも、間違ったトークンが定義されていても、Rails バックエンドはすべてのデータを返します。これはどのように可能ですか?リクエストの認証に使用される他のセッション キャッシュはありますか?
これは、認証を実装する私のスーパー クラスです。
module Api
class SecureBaseController < ApplicationController
prepend_before_filter :get_auth_token
before_filter :authenticate_user!
protected
def get_auth_token
puts token_value
params[:auth_token] = token_value
end
def token_value
if header && header =~ /^Token token="(.+)"$/
$~[1]
end
end
def header
request.headers["Authorization"]
end
end
end
puts
Webアプリケーションによって送信されたように、コンソールに「未定義」と出力されても、ユーザーを正しく認証しますか?