gpt4 book ai didi

ruby-on-rails - 如何记住用户登录的组织?在组织之间切换

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:42 25 4
gpt4 key购买 nike

背景:

  • UserOrganization 通过Relationship 具有多对多 关系。因此,一个用户可以是多个组织的一部分。
  • 但是一个用户只能登录 1 个组织。
  • 因此用户有一个屏幕,他可以在他所属的组织之间切换。
  • 此外,用户 有一个默认组织,这是用户最初登录的组织。这是使用 has-one through 关系实现的。

如何知道/记住用户当前登录的是哪个组织?

现在我有点不知所措如何实现应用程序应该如何知道/记住用户当前登录的组织。我看到三个选项,希望得到最有效的建议:

  1. 用户 数据库中的附加列,用于存储组织(或关系?)用户当前登录的组织。辅助方法 logged_in_for 然后可以根据该列中的值找到组织并返回用户登录的组织。使用数据库列的实现还可以启用验证,以便用户无法将其登录的组织设置为它甚至不属于的组织。
  2. 使用 cookie:session[:logged_in_for] 定义/设置用户当前登录的组织。但是,1) 我怀疑这是否安全(不确定为什么),2) 我认为第一个选项可以更好地促进验证,3) 我也不认为这可以与登录“记住我”选项结合使用?
  3. 实现一个附加通过关系来定义用户登录的组织。这基本上是第一个添加关系的选项的扩展。因为我已经有很多关系,所以我不喜欢这个选项。或者对于第一个选项没有办法绕过这个添加?

第一个选项确实是了解/记住用户当前登录的组织的有效方法吗?

最佳答案

这实际上取决于您希望为最终用户创造的体验。在你的情况下:

  1. 这将允许记住登录之间的组织,这在您的应用程序中可能有用或完全没有意义。如果记住一个组织确实有用(即,用户在登录后选择组织的逻辑并不频繁),那么这可以创造更好的用户体验。

  2. session 是安全的,您可以像散列一样使用它,它不会与应用中的其他功能冲突(除非您使用相同的 key )。这种情况适合您的应用程序,当用户总是在登录后选择一个组织,因此它应该是基于 session 的。

引用:http://guides.rubyonrails.org/security.html

  1. 正如您所提到的,这是不理想的,您已经知道了。

关于ruby-on-rails - 如何记住用户登录的组织?在组织之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31974356/

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