我一直在疯狂地搜索这个,到目前为止还没有运气。
到目前为止 sign_in 和 sign_out 工作正常。他们重定向到正确的行动。我的问题是登录失败时。我被发送到一个看起来像空白的 html 页面,显示“无效的登录名或密码”。由create 操作呈现或由 create操作呈现的文本。AFAIK创建应该只在失败时重定向或呈现。我有一个自定义控制器,我拥有此处列出的设计代码的唯一原因是查看行为发生的位置。我现在真的只需要继承行为,因为我不想在身份验证后重定向到自定义路径。
日志内容如下:
Started POST "/login.user" for 127.0.0.1 at 2012-05-14 15:50:02 -0700
Processing by Users::SessionsController#create as
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Pf2+YBqmb5+231nbuD/MeDlz6H7/qOjV4N50WnlJ0rc=", "user"=>{"login"=>"qwdwqqd", "password"=>"[FILTERED]", "remember_me"=>"0"}, "x"=>"40", "y"=>"8"}
Completed 401 Unauthorized in 32ms
这是我的控制器:
Users::SessionsController < ::Devise::SessionsController
def create
resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
我的路线如下:
devise_for :users, :controllers => {:sessions => "users/sessions", :registrations => "users/registrations"}, :path => '', :path_names => { :sign_in => 'login', :sign_out => 'logout' }
.
.
root :to => 'root#index'
我确定它没有通过
resource = warden.authenticate!(auth_options)
身份验证失败时的线路
资源名称似乎在监狱长失败时以某种方式附加到登录路径。例如 /login.user 而不是 /login
任何帮助将不胜感激,在此先感谢。
Rails 3.2、Devise 2.0.4、机架 (1.4.1)、ruby 1.9.3