首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Omniauth-恒等InvalidAuthenticityToken

Omniauth-恒等InvalidAuthenticityToken
EN

Stack Overflow用户
提问于 2015-08-22 10:53:17
回答 1查看 3.6K关注 0票数 4

我学习了这个关于如何实现Omniauth的栏杆教程,但是遇到了一个障碍。

当我试图注册用户时,会弹出以下错误

代码语言:javascript
复制
ActionController::InvalidAuthenticityToken in SessionsController#create 

在控制台日志中,弹出以下错误

代码语言:javascript
复制
Processing by SessionsController#create as HTML
  Parameters: {"name"=>"asdasd asdasd", "email"=>"asd@yopmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "provider"=>"identity"}
Can't verify CSRF token authenticity

用户被插入标识模型中没有问题,但是当应用程序试图创建会话时,这一切都是徒劳的。

下面是我使用的相关代码

Gemfile

OpenID认证

代码语言:javascript
复制
gem 'bcrypt-ruby', '~> 3.1.2'

gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'omniauth-google-oauth2'
gem 'omniauth-identity'

initializers/omniauth.rb

代码语言:javascript
复制
Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET']
    provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
    provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET']
    provider :identity
end

路由

代码语言:javascript
复制
  get 'auth/:provider/callback', to: 'sessions#create'
  post 'auth/:provider/callback', to: 'sessions#create'
  get 'auth/failure', to: redirect('/')
  get 'signout', to: 'sessions#destroy', as: 'signout'

SessionsController

代码语言:javascript
复制
def create
    user = User.from_omniauth(env['omniauth.auth'])
    session[:user_id] = user.id
    redirect_to root_url, notice: "Signed In!"
end

用户建模

代码语言:javascript
复制
def self.from_omniauth(auth)
    find_by_provider_and_uid(auth["provider"], auth["uid"]) || create_with_omniauth(auth)
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-22 10:57:41

当Rails检查CSRF令牌时引发的错误CSRF,您可以通过跳过验证skip_before_action来禁用控制器上的CSRF保护,将其添加到SessionsController的顶部。

代码语言:javascript
复制
skip_before_action :verify_authenticity_token, only: :create

,但您必须小心,并阅读有关 CSRF 保护的所有内容.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32155296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档