如何从自定义SQL“管理员用户”表中为管理员保护MVC 4区域

时间:2012-12-21 15:11:08

标签: c# asp.net-mvc-4 entity-framework-4.3 asp.net-mvc-areas asp.net-authorization

我已经看过许多关于使用令牌,roleprovider和membershipprovider保护MVC应用程序的示例,但没有一个非常适合我的场景。这是我的设置..

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

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

谢谢你的时间, 克里斯

1 个答案:

答案 0 :(得分: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
{
    // ...
}