我知道这个话题有很多问题,但我还没有找到导致我问题的原因。
我在我的rails服务器上收到消息无法验证CSRF令牌真实性即使我可以在Chrome上看到标题存在。 (如图所示)
我关注these instructions of how to setup ember-simple-auth-devise,它使用令牌进行身份验证。我做了一切相同但有一个例外,而不是将下一个代码放在ApplicationController
内我定义了一个ApiController
类,以便将我的API逻辑与其余部分分开站点。
class ApiController < ActionController::Base
protect_from_forgery with: :null_session
before_action :authenticate_user_from_token!
# I had to comment this line out in order to
# make the authentication work
# before_filter :authenticate_user!
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(
:username, :first_name, :last_name, :email, :password, :password_confirmation
) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(
:username, :first_name, :last_name, :email, :password, :current_password
) }
end
private
def authenticate_user_from_token!
authenticate_with_http_token do |token, options|
user_email = options[:email].presence
user = user_email && User.find_by_email(user_email)
if user && Devise.secure_compare(user.authentication_token, token)
sign_in user, store: false
end
end
end
end
请注意,我必须发表评论before_filter :authenticate_user!
才能使身份验证工作。使用该行我只会收到401个未经授权的请求。
我希望有人可以给我一些见解:
- 为什么即使X-CSRF-Token位于标题中,我也无法验证CSRF令牌的真实性
- 为什么要保留我从示例说明中评论过的内容是否重要/必要?
提前致谢。