c# - 将用户信息保存在 MVC 4 ASP.NET 中的自定义成员资格和角色提供者中

标签 c# asp.net-mvc authentication

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

我关注了this blog .

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

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

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

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

  1. 保持 session 并到处检查?
  2. 保存在 cookie 中并到处检查?
  3. 不需要保存/保留,在页面加载时从数据库获取并在那个时候决定?
  4. 还有其他方法吗?
  5. 在 MVC 中,我需要在何处进行此检查,是否已授权此用户阅读此页面/部分?(在每个 Controller 的索引操作中?)

最佳答案

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

关于c# - 将用户信息保存在 MVC 4 ASP.NET 中的自定义成员资格和角色提供者中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23180235/

相关文章:

c# - SSH.Net库和通配符的使用

c# - 方法封装的性能成本

c# - TeamCity - 无法通过 API 进行身份验证

ruby - 如何签署JWT?

c# - 使用 Win32API : unions within structures generate TypeLoadException

c# - 我如何在c#中使用c++ dll

c# - 如何在用户配置文件中创建自定义附加字段

c# - grid.mvc 在 Controller 中使用过滤结果

asp.net-mvc - 什么是松耦合?

node.js - REST API 和移动应用的身份验证策略