将用户信息保存在自定义成员资格中MVC 4 ASP.NET中的角色提供程序

时间:2014-04-20 08:53:05

标签: c# asp.net-mvc authentication

我用于在Asp.net MVC 4中实现自定义成员资格提供程序和角色提供程序以进行authinticating目的。

我跟着this blog

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

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

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

与我保持这些信息的最佳方式(在安全性和CPU处理方面)是什么?然后检查/比较它们

  1. 保持会议并到处检查?
  2. 保持cookie并检查所有地方?
  3. 不需要保存/保留,在页面加载时从db获取并决定该时间吗?
  4. 还有其他什么可以这样做吗?
  5. 在MVC中,我需要进行此项检查,是否要求此用户自动阅读此apage / section?(在每个Controller的Index操作中?)

2 个答案:

答案 0 :(得分:0)

  1. 在MVC中,您检查所有操作,而不仅仅是Index()。攻击者可以按任何顺序与任何行动联系。
  2. 如果服务器重新启动工作进程,会话可能随时丢失。
  3. 将敏感信息放入cookie中充其量是危险的。您需要使信息防篡改。
  4. 在每个请求中从数据存储重新加载角色几乎就是现有角色提供程序的作用。
  5. 你应该考虑编写一个cuatom MembershipProvider和RoleProvider,然后简单地在控制器动作上使用普通的[Authorize()]指令。这样,您的应用程序将来更容易管理。

答案 1 :(得分:0)

不要对这些深刻的问题感到困惑。您需要的所有内容均由Microsoft成员资格提供商准备。您只需根据您的方案存储分配给它们的用户数据和角色。由于我们在Asp.net MVC进度时间内有2个名为Katana and Owin的成员资格提供者。但是,如果您想实现自己的会员提供商,问题就不同了,查看以下链接可能很有用:

  1. How to configure Custom Membership and Role Provider using ASP.NET MVC4
  2. Custom Membership and Role provider in ASP.NET MVC 4
  3. How do I create a custom membership provider for ASP.NET MVC 2?
  4. How to configure Custom Membership Provider using ASP.NET MVC4 with external login like facebook, yahoo , google or other relying party accounts.