【问题标题】:Managing Different User Roles ASP.NET MVC [closed]管理不同的用户角色 ASP.NET MVC [关闭]
【发布时间】:2012-09-23 18:59:18
【问题描述】:

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

有一点需要提一下——我不使用 Membership 类(我发现使用它是一种开销,我想实现我需要的确切的东西,并且从过程中学习)。

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

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

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

提前致谢!

【问题讨论】:

  • “最佳实践”本质上是主观的东西。第一个人可能会说“最佳实践”是使用会员模型。我知道在正常情况下,我会这么说。不要重新发明轮子。我也知道有些地方在 .NET 之前就有会员系统,你必须在它的范围内工作,因为重新做这项工作是不值得的。我的观点是,这个问题没有规范的答案。答案是(而且永远都是)视情况而定。 QA 格式不太擅长回答这类问题。祝您工作顺利。

标签: c# asp.net asp.net-mvc authorization user-roles


【解决方案1】:

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

在您知道自己在做什么之前,请使用默认的会员身份。否则你只会创建一个易受攻击的架构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    相关资源
    最近更新 更多