gpt4 book ai didi

ruby-on-rails - 使用没有 cookie 的设计 "rememberable"

转载 作者:行者123 更新时间:2023-12-04 06:27:54 25 4
gpt4 key购买 nike

我有一个使用 devise 的 Rails 站点来管理用户。对于 session 管理,我正在使用设计的 rememberable策略,它从用户的 cookie 中存储和检索加密的身份验证信息。

我正在实现一个使用 flash 的多张照片上传小部件。 Flash 不支持随请求一起发送 cookie。这是多个多上传flash+javascript库的问题,所以修复这个缺点可能是不可行的。

所以我的问题是:我是否可以在不使用 cookie 的情况下成功通过身份验证来设计/记住?如果是这样,怎么做到的?

更多详情

设计/内存取决于 cookie 中 remember_token 的值。如果我能愚弄 Rails,让它认为该值是作为 cookie 提供的(例如 request.cookies['remember_token'] = '...'),我的问题就会得到解决。 Devise/rememberable 会在那里找到正确的值,将其解压缩并成功进行身份验证。然而,request.cookies 散列显然是只读的。写入散列被静默忽略。示例(来自传入 POST 请求的调试控制台):

>> request.cookies['remember_token'] = 'a string'
=> "a string"
>> request.cookies['remember_token']
=> nil
>> request.cookies
=> {}

我正在使用(或尝试使用)FancyUpload v3小部件。

最佳答案

稍微重写 Devise 怎么样?

基于 Devise 1.2.rc 这样的东西应该可以工作:

module Devise
module Strategies
class Rememberable
def remember_cookie
# your code to get the hashed value from the request
end
end
end
end

或者,您可以添加一个新的(子类化的)策略:

module Devise
module Strategies
class RememberableParameter < Rememberable
def remember_cookie
# your code to get the hashed value from the request
end
end
end
end
Warden::Strategies.add(:rememberable_parameter, Devise::Strategies::Rememberable)

或者,查看 Token Authenticatable:

Token Authenticatable: signs in a user based on an authentication token (also known as "single access token"). The token can be given both through query string or HTTP Basic Authentication

这里有更多相关信息: https://github.com/plataformatec/devise/blob/master/lib/devise/models/token_authenticatable.rb

祝你好运!

关于ruby-on-rails - 使用没有 cookie 的设计 "rememberable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com