似乎无法创建一种功能性方法来从 Java for Devise 插入用户。目前有这些字段: “_ID”, “访问权限”, “确认发送时间”, “确认 token ”, “确认时间”, “电子邮件”, “加密密码”, “登录计数”
我能够插入一个算作用户的文档。问题是当我去: http://www.mysite.com:3000/users/confirmation?confirmation_token=TOKENHERE
我收到一条消息说它无效。
编辑 1: 当我为该用户(WHICH GENERATES A NEW TOKEN) 重新发送确认指令时,用户可以登录。这证实了我对 token 是问题所在的怀疑。如何将 Devise 的 token 生成器移植到 Java?
编辑 2: 当我在网站上注册时,它说我应该检查确认链接。但是,如果我进入 Mongo shell,手动取出确认 token 并将其粘贴到 site.com/users/confirmation?confirmation_token= 然后它不起作用!但是,如果我实际使用发送给我的确认链接,它就可以工作。我怎样才能制作一个 VALID token ,全部来自 Java。请帮忙!
请您参考如下方法:
这个问题你应该引用this stackoverflow answer和 protect_from_forgery 的 Rails API .
简短的回答是在您的 Controller 中禁用伪造保护,但这会使您的应用程序容易受到 CSRF 攻击:
skip_before_action :verify_authenticity_token
更好的方法是使用 JSON 或 XML 请求进行身份验证,因为这些请求不受 CSRF 保护。您可以找到设计的解决方案 here .
编辑
Monkey 补丁设计用于保存未编码的确认 token 。在你的 config/initializers/devise.rb
module Devise
module Models
module Confirmable
def generate_confirmation_token
raw, enc = Devise.token_generator.generate(self.class, :confirmation_token)
@raw_confirmation_token = raw
self.my_unencoded_column = raw # Patch
self.confirmation_token = enc
self.confirmation_sent_at = Time.now.utc
end
end
end
end