0

我有一个像这样的自定义用户:

class PersonsController < UsersController

end

但是,在正常登录后,当我单击“人员/编辑”时,我被重定向到登录页面......我可以在日志中看到以下内容:

由 Person::RegistrationsController#edit 处理为 HTML Completed 401 Unauthorized in 0ms

然后我再次被重定向到登录页面,此时我没有丢失会话,我可以点击我的个人资料并查看帐户详细信息。

只是不确定为什么 Devise 对 Edit 操作有问题

我的注册控制器中也有以下结构

class Person
     class RegistrationsController < Devise::RegistrationsController
     end
end

任何帮助,不胜感激。谢谢。

4

2 回答 2

0

您自定义设计的最终目标尚不清楚,但如果您尝试编辑当前用户的信息,我建议您检查此链接。设计-操作方法:-允许用户编辑他们的密码

此示例是编辑用户密码,但如果您需要更多字段,则可以毫无问题地添加它。但是您应该有一个使用用户模型的单独控制器。

于 2012-07-11T00:51:33.723 回答
0

实际上我找到了解决方案,我不得不在我的自定义 Person::RegistrationsController 中重新定义这个方法

def authenticate_scope!
  send(:"authenticate_user!", :force => true)
  self.resource = send(:"current_user")
end

似乎会话没有自定义的“current_person”方法,但始终是 current_user,因为我使用“users/sign_in”登录(我想要系统中其他自定义用户的通用登录点)。如果我使用“persons/sign_in”登录,则不需要此解决方法。由于某些原因。我不太清楚为什么,这是设计的 github repo 的原始方法:

def authenticate_scope!
  send(:"authenticate_#{resource_name}!", :force => true)
  self.resource = send(:"current_#{resource_name}")
end

我希望这对将来的人有所帮助,问候。

于 2012-07-11T13:20:34.110 回答