cho*_*obo 6 authentication asp.net-mvc personalization asp.net-mvc-2
我有一个网站,其区域需要身份验证.现在我在该区域的所有控制器上使用roles属性,并运行查询以检索该用户ID及其所有设置.
对于我来说,每次该区域的控制器加载时,我正在检索用户标识和设置,这似乎是代码或设计的气味?我不确定我是否应该使用会话,或者ASP.Net MVC 2.0是否提供了一些独特的方法来处理这个问题.另一个问题是安全性.
总的来说,我真的不知道转向哪种方式.设计明智我想在用户登录该区域时只检索一次userId和设置.现在我每次控制器加载时都会抓取userId,然后如果需要,我每次都会查询数据库的设置.
Tho*_*mas 11
关于安全性的规则之一是你不应该自己尝试.在不留下漏洞或后门的情况下正确地进行身份验证系统存在许多陷阱.因此,在这方面,您可能会考虑.NET附带的SqlMembershipProvider.它可以与MVC一起使用,并提供获取角色和当前安全上下文的方法,易于设置和配置,并且比滚动自己更安全.
如果您不使用SQL Server,则有几个选择.一种解决方案是使用SQL Server Express或SQL Server Compact Edition之类的东西来维护凭据.另一种解决方案是模仿SqlMembrershipProvider数据库模式,然后编写与该模式通信的自定义提供程序.
最后一个选择是编写自定义MembershipProvider类.虽然这仍然是您自己的,但它会强制您进入MembershipProvider的结构,以便您可以在以后将其交换为另一个(例如ActiveDirectoryMembershipProvider)并提供用于与凭证和登录进行交互的通用接口,例如可以轻松使用内置的Login控件.
如果您已经在使用MembershipProvider并且要求存储其他特定于用户的数据,那么我建议SqlProfileProvider包含我上面提到的关于SqlMembershipProvider的所有警告.ProfileProvider提供了一种结构,用于维护当前登录用户的用户特定数据.
欲获得更多信息:
| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |