1

我已经看到了许多使用令牌、roleprovider 和 memberprovider 保护 MVC 应用程序的示例,但没有一个完全适合我的场景。这是我的设置..

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

这就是我要问的问题。如何从我的 AdminUsers sql 表中针对“管理员”验证基本身份验证当前用户,然后只允许这些人访问我的管理区域?

谢谢你的时间,克里斯

4

1 回答 1

4

如果您不打算依赖成员资格或角色,您总是可以编写一个自定义实现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
{
    // ...
}
于 2012-12-21T15:45:49.280 回答