gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中加密和解密 ID?

转载 作者:行者123 更新时间:2023-12-05 08:32:49 25 4
gpt4 key购买 nike

我有一个要求,用户应该在哪里登录,并且应该登陆到一个特定的页面。

基本上用户会在他的电子邮件中获得一个链接,点击该链接用户将登录到系统并登陆特定页面。目前我正在使用记录 ID(用户 ID)实现此功能。

网址看起来像这样。

localhost:3000/details?user_id=412

def details
@user = User.find(user_id)
signin(@user)
end

由于上述网址,任何人都可以通过更改 ID 随机访问其他用户帐户。我希望这个 id 在 url 中加密,并且在 Controller 操作中我想解密它。我不希望整个应用程序都进行这种加密,我只想为此操作实现。

例如:

localhost:3000/details?user_id=SnrIcaMA8rikrnNX6RRKNw

def details
@user = User.find(decrypt(user_id))
signin(@user)
end

最佳答案

这里不需要涉及任何加密。

最简单的解决方案是向用户表添加一个新字段,email_token(或其他)并将其设置为您想要的任何随机值。 SecureRandom.hexSecureRandom.uuid 就是很好的例子。

然后您只需使用此标记来生成链接,而不是用户 ID。您的链接将如下所示:

 example.com/details?token=d3fff15f2e1707719a2acbd4c1edd110

然后在你的 Controller 中你做类似的事情

user = User.where(email_token: params[:token]).first
if user
# show page
else
# redirect to "not authorized" page
end

尝试猜测另一个现有 token 祝你好运。

与从用户 ID 中获取某些值相比,此方案的优势之一是,如果某些链接/ token 被发布到论坛或其他内容,您只需更改受损 token ,而不会影响其他用户。

关于ruby-on-rails - 如何在 Rails 中加密和解密 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198893/

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