2

我目前正在开发一个 ASP.NET MVC4 网站,我想知道存储登录用户数据(包括权限)并安全地授权用户的最佳实践是什么,能够在我的视图和控制器中访问这些数据.

需要重点提一提的一件事——我没有使用 Membership 类(我已经看到使用它对我来说是一种开销,我想实现我需要的确切东西并从这个过程中学习)。

我认为这样做的唯一方法是将所有数据存储在会话对象中,并为会话对象(静态类)提供一个包装器并像使用它一样使用它SessionManager.IsLoggedIn()SessionManager.GetUserPriviliges()或者只是创建一个返回硬类型 UserSessionData 的方法,SessionManager.GetSessionData()其中包含所有所需的数据。这是在控制器和视图中使用它的一种方式。我应该从 Controller 派生并创建一个RolesController存储 UserSessionData 这样我就不需要在我的控制器中一次又一次地调用它吗?

我想我将无法使用通用AuthorizedAttribute,因此我将不得不使用会话包装器来实现它(仅使用会话数据是否安全?因为我没有使用“官方”授权方法,因此我不'真的不知道应该如何实施)。

如您所见,我有一个想法,但自从我第一次这样做以来,我想了解最佳实践以及正确完成它的方式。如果您能解释您的答案,我将不胜感激,因为我想获得完整的想法,而我之前在 MVC 中没有这样做过。

提前致谢!

4

1 回答 1

3

做你描述的任何事情都是不安全的。静态类在 asp.net 中很危险,因为它们不是多用户安全的。静态类在应用程序中的所有线程之间共享,包括运行其他用户请求的线程。

只需使用默认的会员资格,直到您知道自己在做什么。否则,您只会创建一个易受攻击的架构。

于 2012-10-03T00:58:42.433 回答