在Devise身份验证中仅允许某些路由

时间:2011-10-28 15:23:12

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

我正在使用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匹配网址,否则将它们重定向到某个默认的'application #index'路由。

1 个答案:

答案 0 :(得分:1)

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