我已按照设计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
我有一个常见的情况,即用户已注销,尝试访问受限制的页面,然后重定向以自行登录。
但是,当该用户被重定向时,设计会将其发送到/users/sign_in
路径而不是/login
。
我可以将重定向到/login
网址的唯一方法是将其添加到routes.rb
的顶部:
match "/users/sign_in" => redirect('/login')
它为我的应用程序添加了一个重定向,这反过来会混淆测试 - 每当我做这样的事情时:
current_url.should == login_path
我收到错误消息,说预期路径为“/ login”,实际为“/ users / sign_in”。
我在这里想念一下 - 有什么优雅的解决方法吗?感谢。
我只使用:omniauthable
进行身份验证,但我添加:database_authenticatable
来设计配置以强制它转到专用登录页面。
否则,设计总是指向根路径,所以看起来如此。如果您知道更好的方法,请 - 请加入。