如何从自定义SQL“adminusers”中保护管理员的MVC4区域表格

本文关键字:管理员 保护管 保护 MVC4 表格 区域 自定义 SQL adminusers | 更新日期: 2023-09-27 17:49:24

我已经看到了许多关于使用令牌、角色提供者和成员提供者保护MVC应用程序的示例,但没有一个非常适合我的场景。这是我的设置…

  • VS2012连接到SQL 2008 R2使用EntityFramework 4.3管理数据。
  • 项目设置在IIS中进行基本身份验证,因此所有具有empID的员工,教师和学生都可以在内部或外部进行身份验证。其中一些人是管理员,所以他们在管理区域进行管理。
  • 我在我的项目中创建了一个"Admin"区域,目前没有安全性,所以任何人都可以输入domain/Admin并被重定向到该区域。该区域包含和管理员(CRUD)、约会(CRUD)、设置(U)、工具和报告功能。adminUser和appointments部分有它们自己的表,CRUD按预期工作。

这就是我要问的…我如何验证基本身份验证当前用户对"Admins"从我的AdminUsers sql表,然后只允许这些人访问我的管理区域?

谢谢你的时间,克里斯。

如何从自定义SQL“adminusers”中保护管理员的MVC4区域表格

如果您不打算依赖于成员关系或角色,您可以编写一个自定义的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
{
    // ...
}