我已经按照设计wiki将登录路线/users/sign_in
从/login
. 我的路线文件如下所示:
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise_scope :user do
get '/login' , :to => 'devise/sessions#new' , :as => :login
delete '/logout', :to => 'devise/sessions#destroy', :as => :logout
end
我的用户模型有这个
class User < ActiveRecord::Base
devise :omniauthable, :database_authenticatable
end
我有一个常见的场景,用户注销,尝试访问受限页面,然后重定向到自己登录。
但是,当该用户被重定向时,devise 会将它们发送到/users/sign_in
path 而不是/login
.
我可以使重定向到/login
url 工作的唯一方法是将其添加到我的顶部routes.rb
:
match "/users/sign_in" => redirect('/login')
它为我的应用程序添加了一个重定向,这反过来又搞乱了测试——每当我做这样的事情时:
current_url.should == login_path
我收到一条错误消息,提示预期路径是“/login”,而实际路径是“/users/sign_in”。
我在这里错过了什么吗?解决它的优雅方法是什么?谢谢。
边注
我只用于:omniauthable
身份验证,但我添加:database_authenticatable
了设计配置以强制它进入专用登录页面。
否则,设计总是指向根路径,看起来是这样。如果您知道更好的方法,请加入。