我目前正在开发一个ASP.NET MVC4网站,我想知道存储登录用户数据(包括权限)的最佳实践,并安全地授权用户,能够在我的两个网站中访问这些数据观点和控制者。
重要提及一件事 - 我不使用Membership类(我看到它是我使用它的开销,我想实现我需要的确切内容和从过程中学习。)
我认为这样做的唯一方法是将所有数据存储在会话对象中,并拥有会话对象(静态类)的包装器,并像SessionManager.IsLoggedIn()
,SessionManager.GetUserPriviliges()
或简单地使用它一样创建一个返回硬类型UserSessionData SessionManager.GetSessionData()
的方法,该方法包含所需的所有数据。
这是在控制器和视图中使用它的一种方法。我应该从Controller派生并创建一个存储UserSessionData的RolesController
,这样我就不需要在我的控制器中一次又一次地调用它?
我想我将无法使用公共AuthorizedAttribute
所以我将不得不通过使用会话包装器来实现它(仅使用会话数据是否安全?因为我没有使用'官方的授权方法,因此我真的不知道应该如何实施。
如您所见,我有一个想法,但自从我第一次这样做以来,我想了解最佳实践以及应该正确完成的方式。如果你能解释你的答案我会很感激,因为我想要得到完整的想法,而我之前没有在MVC中做过。
提前致谢!
答案 0 :(得分:3)
做任何你描述的事情是不安全的。静态类在asp.net中很危险,因为它们不是多用户安全的。静态类在应用程序中的所有线程之间共享,包括运行其他用户请求的线程。
在你知道自己在做什么之前,只需使用默认的成员资格。否则你只会创建一个易受攻击的架构。