自定义设计用户未获得编辑授权

时间:2012-07-10 22:27:33

标签: ruby-on-rails devise

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

class PersonsController < UsersController

end

然而,在登录后,当我点击“人物/编辑”时,我被重定向到登录页面......我可以在日志中看到以下内容:

  

按Person处理:: RegistrationsController#编辑为HTML已完成   401在0ms内未经授权

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

不确定为什么Devise在编辑操作中存在问题

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

class Person
     class RegistrationsController < Devise::RegistrationsController
     end
end

任何帮助,我们都很感激。感谢。

2 个答案:

答案 0 :(得分:1)

实际上我找到了解决方案,我不得不在我的自定义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'登录,则不需要此解决方法。由于某些原因。我不确定为什么,这是来自devise的github repo的原始方法:

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

我希望这可以帮助将来的某个人,问候。

答案 1 :(得分:0)

您自定义的最终目标不明确,但如果您尝试编辑当前用户的信息,我建议您查看此链接。 Devise - How-To:-Allow-users-to-edit-their-password

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