0

出于某种原因,我的应用程序将失败的会话创建重定向到应用程序的根页面,而不是显示有关登录失败原因的错误,例如密码错误。

我捕获了http响应:

Request URL:http://localhost:3000/users/sign_in
Request Method:POST
Status Code:302 Moved Temporarily

我的代码执行:

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>

如果我将 url 更改为 user_session_path - 我得到以下信息:

Invalid email or password.

但是,它只是呈现为简单的文本。

Request URL:http://localhost:3000/users/sign_in.user
Request Method:POST
Status Code:401 Unauthorized

我安装了omniauth 和cancan gem。不知道从哪里开始寻找 - 有什么想法吗?(另一方面,我在 rake 路由中看不到路由会话,但如果我执行正确的登录,它会登录。这怎么可能?)

谢谢!

4

1 回答 1

0

我发现我的应用在 lib 文件夹中有一个 CustomFailure 类。这总是在登录时重定向到根目录。删除此失败应用程序后,该应用程序在登录失败后将我重定向回登录屏幕。

根据Rails - 设计 - 登录时出现错误消息?,错误不是给表单域,而是给闪消息。因此,您需要将它们包含在默认的设计新会话视图中。

我仍然不明白为什么 session_path 有效,以及为什么 user_session_path 会产生我的问题中发布的结果。

于 2012-05-31T08:12:19.820 回答