我看过很多关于使用 token 、角色提供者和成员资格提供者保护 MVC 应用程序的示例,但没有一个非常适合我的情况。这是我的设置..
- VS2012 使用 EntityFramework 4.3 链接到 SQL 2008 R2 管理数据。
- 项目在 IIS 中设置为进行基本身份验证,因此所有拥有 empID 的教职员工和学生都可以进行内部或外部身份验证。其中一些人是管理员,因此他们在管理区域进行管理。
- 我在我的项目中创建了一个当前没有安全性的“管理”区域,因此任何人都可以键入 domain/admin 并被重定向到该区域。该区域包含管理员用户 (CRUD)、约会 (CRUD)、设置 (U)、工具和报告功能。 adminUser 和 appointments 部分有自己的表,CRUD 正在按预期工作。
这就是我要问的.. 如何根据我的 AdminUsers sql 表中的“管理员”验证当前用户的基本身份验证,然后只允许这些人访问我的管理区域?
谢谢你的时间, 克里斯
最佳答案
如果您不打算依赖成员资格或角色,您始终可以编写 AuthorizeAttribute
的自定义实现来根据数据库检查用户。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class AdminOnlyAttribute : AuthorizeAttribute
{
public AdminOnlyAttribute()
{
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!User not in Admin table)
{
throw new UnauthorizedAccessException();
}
base.OnAuthorization(filterContext);
}
}
或者类似的东西。然后当然是:
[AdminOnly]
public class AdminController : Controller
{
// ...
}
关于c# - 如何从自定义 SQL "AdminUsers"表中为管理员保护 MVC4 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992514/