背景:
User和Organization通过Relationship建立了many-to-many关系。因此,用户可以成为多个组织的一部分。user有一个默认的组织,它是用户最初登录的组织。这是使用has-one through关系实现的。如何知道/记住用户当前登录的组织?
现在,我有点不知所措,如何实现应用程序应该如何知道/记住用户当前登录的组织。我看到了三种选择,并希望得到最好的建议:
User (或relationship?) id的 db中的附加列。当前已登录的用户。然后,帮助方法logged_in_for可以根据该列中的值找到组织,并返回用户登录的组织。使用db列的实现还允许验证,这样用户就不能将它登录到的组织设置为它甚至不是其一部分的组织。session[:logged_in_for]。然而,1)我怀疑这是否安全(不确定为什么),2)我认为第一种选择更有利于验证,3)我也不认为这与登录“记得我”选项一起工作?has-one through relationship的附加。这基本上是添加关系的第一个选项的扩展。因为我已经有了这么多的关系,所以我不喜欢这个选择。或者,对于第一个选项,没有办法绕过这个附加项吗?第一个选项确实是了解/记住用户当前登录的组织的有效方法吗?
发布于 2015-08-12 20:13:21
这实际上取决于您希望为最终用户创建的体验。在你们的案例中:
session是安全的,您可以像散列一样使用它,它不会与应用程序中的其他功能发生冲突(除非您使用相同的键)。这种情况适合您的应用程序,因为用户应该总是在登录后选择一个组织,因此应该基于会话。参考文献:http://guides.rubyonrails.org/security.html
发布于 2015-08-12 20:11:59
您可以将信息存储在会话散列中,但不能使用cookie存储,而可以使用活动记录存储
https://stackoverflow.com/questions/31974356
复制相似问题