【问题标题】:Allow only certain routes in Devise authentication在 Devise 身份验证中仅允许某些路由
【发布时间】:2011-10-28 15:23:11
【问题描述】:

我正在使用 Devise omniauth 通过 Facebook 对用户进行身份验证。

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

这很好用,但我想限制用户访问“http://app/users/sign_in”页面

我可以改变路线如下:

devise_scope :user do 
  match '/users/auth/facebook/callback' => 'users/omniauth_callbacks#facebook'
end 

但是我该如何重定向用户,以免收到来自具有

的控制器的不愉快消息
before_filter :authenticate_user!

我想要的是让用户只使用 devise_scope 匹配的 url,否则总是将他们重定向到一些默认的 'application#index' 路由。

【问题讨论】:

    标签: facebook devise routes ruby-on-rails-3.1


    【解决方案1】:

    当仅使用omniauth 而不使用database_authenticable 时,最新的设计版本将始终将您重定向到root_url 页面。您可以通过生成一条以“new_user_session”作为名称指向您的“application#index”的路由来自定义它。

    【讨论】:

    • 谢谢!修改了路由文件devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } do get 'users/sign_in' => 'application#about', :as => :new_user_session end,并且还必须删除用户模型设计:validatable 选项,因为仅使用omniauth 选项时不需要密码字段。
    猜你喜欢
    • 2016-11-13
    • 2020-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2013-01-06
    • 2023-04-08
    • 2015-08-22
    • 2012-12-09
    相关资源
    最近更新 更多