管理不同的用户角色 ASP.NET MVC [关闭]
Posted
技术标签:
【中文标题】管理不同的用户角色 ASP.NET MVC [关闭]【英文标题】:Managing Different User Roles ASP.NET MVC [closed] 【发布时间】:2012-09-23 18:59:18 【问题描述】:我目前正在开发一个 ASP.NET MVC4 网站,我想知道存储登录用户数据(包括权限)并安全地授权用户的最佳实践是什么,能够在我的视图和控制器。
有一点需要提一下——我不使用 Membership 类(我发现使用它是一种开销,我想实现我需要的确切的东西,并且从过程中学习)。
我认为这样做的唯一方法是将所有数据存储在会话对象中,并为会话对象(静态类)提供一个包装器并像SessionManager.IsLoggedIn()
、SessionManager.GetUserPriviliges()
一样使用它,或者只是创建一个方法返回包含所有所需数据的硬类型 UserSessionData SessionManager.GetSessionData()
。
这是在控制器和视图中使用它的一种方式。我是否应该从 Controller 派生并创建一个 RolesController
来存储 UserSessionData,这样我就不需要在我的控制器中一次又一次地调用它?
我想我将无法使用常见的AuthorizedAttribute
,所以我将不得不使用会话包装器来实现它(仅使用会话数据是否安全?因为我没有使用“官方”授权方法,因此我真的不知道应该如何实现)。
如您所见,我有一个想法,但自从我第一次这样做以来,我想了解最佳实践以及正确完成它的方式。如果您能解释您的答案,我将不胜感激,因为我想获得完整的想法,而我之前在 MVC 中没有这样做过。
提前致谢!
【问题讨论】:
“最佳实践”本质上是主观的东西。第一个人可能会说“最佳实践”是使用会员模型。我知道在正常情况下,我会这么说。不要重新发明***。我也知道有些地方在 .NET 之前就有会员系统,你必须在它的范围内工作,因为重新做这项工作是不值得的。我的观点是,这个问题没有规范的答案。答案是(而且永远都是)视情况而定。 QA 格式不太擅长回答这类问题。祝您工作顺利。 【参考方案1】:执行您所描述的任何事情都是不安全的。静态类在 asp.net 中很危险,因为它们不是多用户安全的。静态类在应用程序中的所有线程之间共享,包括运行其他用户请求的线程。
在您知道自己在做什么之前,请使用默认的会员身份。否则你只会创建一个易受攻击的架构。
【讨论】:
以上是关于管理不同的用户角色 ASP.NET MVC [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
七天学会ASP.NET MVC ——Layout页面使用和用户角色管理
从基本 asp.net 身份用户创建继承用户或为每个角色实现不同的接口? [关闭]