0

我已经按照设计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_inpath 而不是/login.

我可以使重定向到/loginurl 工作的唯一方法是将其添加到我的顶部routes.rb

match "/users/sign_in" => redirect('/login')

它为我的应用程序添加了一个重定向,这反过来又搞乱了测试——每当我做这样的事情时:

current_url.should == login_path

我收到一条错误消息,提示预期路径是“/login”,而实际路径是“/users/sign_in”。

我在这里错过了什么吗?解决它的优雅方法是什么?谢谢。

边注

我只用于:omniauthable身份验证,但我添加:database_authenticatable了设计配置以强制它进入专用登录页面。

否则,设计总是指向根路径,看起来是这样。如果您知道更好的方法,请加入。

4

0 回答 0