首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何记住用户登录的组织?组织间的转换

如何记住用户登录的组织?组织间的转换
EN

Stack Overflow用户
提问于 2015-08-12 20:03:19
回答 2查看 55关注 0票数 1

背景:

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

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

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

  1. 存储User (或relationship?) id的 db中的附加列。当前已登录的用户。然后,帮助方法logged_in_for可以根据该列中的值找到组织,并返回用户登录的组织。使用db列的实现还允许验证,这样用户就不能将它登录到的组织设置为它甚至不是其一部分的组织。
  2. 使用定义/设置用户当前登录的组织的cookie:session[:logged_in_for]。然而,1)我怀疑这是否安全(不确定为什么),2)我认为第一种选择更有利于验证,3)我也不认为这与登录“记得我”选项一起工作?
  3. 实现一个定义用户登录的组织的has-one through relationship的附加。这基本上是添加关系的第一个选项的扩展。因为我已经有了这么多的关系,所以我不喜欢这个选择。或者,对于第一个选项,没有办法绕过这个附加项吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-12 20:13:21

这实际上取决于您希望为最终用户创建的体验。在你们的案例中:

  1. 这将允许记住登录之间的组织,在您的应用程序中,这可能是有用的或完全没有意义的。如果记住一个组织确实是有用的(例如,用户在登录后选择一个组织的物流是不经常的),那么这可以创造一个更好的用户体验。
  2. session是安全的,您可以像散列一样使用它,它不会与应用程序中的其他功能发生冲突(除非您使用相同的键)。这种情况适合您的应用程序,因为用户应该总是在登录后选择一个组织,因此应该基于会话。

参考文献:http://guides.rubyonrails.org/security.html

  1. 就像你说的,这是不理想的,你已经知道了。
票数 2
EN

Stack Overflow用户

发布于 2015-08-12 20:11:59

您可以将信息存储在会话散列中,但不能使用cookie存储,而可以使用活动记录存储

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31974356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档