我将 Devise 与 OmniAuth for Saml 结合使用。 Saml 回调不会回发 csrf token ,因此我收到此错误:
ActionController::InvalidAuthenticityToken at /users/auth/saml/callback
因此,为了防止 CSRF 检查我的 SAML 回调,我为 saml
方法添加了 :except
。
但这似乎不起作用。有什么方法可以防止 CSRF 使用 Devise 和 OmniAuth 检查 SAML 回调?
这是我的 OmniauthCallbacks
Controller :
class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
protect_from_forgery :except => [:saml]
def saml
response = OneLogin::RubySaml::Response.new(params[:SAMLResponse])
raise response.to_yaml
# if response.is_valid?
# redirect_to root_url
# end
end
end
最佳答案
我在一个代码库中,通过在 Controller 顶部使用这个位来解决这个问题:
skip_before_filter :verify_authenticity_token
关于ruby-on-rails - 设计 + OmniAuth Saml:ActionController::InvalidAuthenticityToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807539/