繁体   English   中英

在MVC 4 ASP.NET中将用户信息保留在自定义成员身份和角色提供者中

[英]Keeping user's Information in Custom membership & role provider in MVC 4 ASP.NET

我正在使用Asp.net MVC 4中的实现自定义成员身份提供程序和角色提供程序进行身份验证。

我关注了这个博客

这个应用程序非常大,非常敏感。我没有使用MVC的内置身份验证,我想实现自己的数据库架构。

我需要在同一用户的不同页面上提供不同的特权。 例如,同一用户可能在一个页面上是管理员,而在另一页面上是访客,某些用户可能具有读/写角色,而其他用户则具有只读角色等。为此,我需要保留用户信息,例如用户名,用户名, user_role和其他个人资料信息,并在每次点击和网站上的每个页面上进行检查。

我的提供者工作正常,我只是有这些问题。

什么是最好的方式(就安全性和CPU处理而言)随身携带这些信息然后进行检查/比较

  1. 保持会话状态并检查所有地方?
  2. 保存在cookie中并检查所有地方?
  3. 不需要保存/保留,在页面加载时从db获取并确定该时间?
  4. 还有其他方法吗?
  5. 在MVC中我需要进行此检查的地方,是否已授权该用户读取此页面/部分?(在每个Controller的Index动作中?)
  1. 在MVC中,您检查所有动作,而不仅仅是Index()。 攻击者可以按任何顺序伸手采取任何行动。
  2. 如果服务器重新启动工作进程,则会话随时可能丢失。
  3. 将敏感信息放入Cookie最多是危险的。 您需要使信息防篡改。
  4. 在每次请求时从数据存储中重新加载角色几乎与现有角色提供者的工作方式相同。
  5. 您应该真正考虑编写cuatom MembershipProvider和RoleProvider,然后仅在控制器操作上使用常规的[Authorize()]指令。 这样一来,您的应用程序将来将更易于管理。

不要对这个深刻的问题感到困惑。 您需要的所有东西都是由Microsoft成员资格提供程序准备的。 您只需要存储根据您的方案分配的用户数据和角色即可。 由于我们在Asp.net MVC进行期间有2个名为Katana和Owin的成员资格提供程序。 但是,如果您想实现自己的成员资格提供程序,问题会有所不同,查看以下链接可能会有用:

  1. 如何使用ASP.NET MVC4配置自定义成员资格和角色提供程序
  2. ASP.NET MVC 4中的自定义成员资格和角色提供程序
  3. 如何为ASP.NET MVC 2创建自定义成员资格提供程序?
  4. 如何使用ASP.NET MVC4通过外部登录(如Facebook,Yahoo,Google或其他依赖方帐户)配置自定义成员资格提供程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM