C# 管理不同的用户角色ASP.NET MVC

C# 管理不同的用户角色ASP.NET MVC,c#,asp.net,asp.net-mvc,authorization,user-roles,C#,Asp.net,Asp.net Mvc,Authorization,User Roles,我目前正在开发一个ASP.NET MVC4网站,我想知道存储登录用户数据(包括权限)并安全授权用户的最佳做法是什么,以便能够在我的视图和控制器中访问此数据 有一点很重要,我没有使用Membership类(我发现使用它会增加开销,我想实现我需要的东西,并从中学习) 我认为实现这一点的唯一方法是将所有数据存储在会话对象中,并为会话对象(静态类)提供一个包装器,并像SessionManager.IsLoggedIn(),SessionManager.GetUserPriviliges()那样使用它或只

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

有一点很重要,我没有使用Membership类(我发现使用它会增加开销,我想实现我需要的东西,并从中学习)

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

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

正如你所看到的,我有一个想法,但由于这是我第一次这样做,我想了解最佳实践和正确的做法。如果您能解释一下您的答案,我将不胜感激,因为我想了解完整的想法,而我以前在MVC中从未这样做过


提前谢谢

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

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

“最佳实践”本质上是主观的。个人1可能会说“最佳实践”是使用会员模式。我知道在正常情况下,我会这么说。不要重新发明轮子。我还知道,有些地方在.NET之前就有会员制,你必须在它的范围内工作,因为重新做工作是没有报酬的。我的意思是,这个问题没有标准的答案。答案是(而且永远是)这要看情况而定。QA格式不太擅长回答这类问题。祝你好运。