c# - 如何从自定义 SQL "AdminUsers"表中为管理员保护 MVC4 区域

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

我看过很多关于使用 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/

相关文章:

c# - 使用 foreach 循环解析大型文本文件的奇怪行为 (C# .NET 4)

c# - 如果我有一个自定义对话框窗口,每次都可以创建一个新对话框吗?

asp.net-mvc-4 - 多个 RequiredFieldValidator 崩溃页面

c# - Entity Framework POCO : How to map related properties to a flattened table?

entity-framework - Entity Framework : One Database, 多个 DbContext。这是一个坏主意吗?

c# - 如何在 C# 中序列化 StrokeCollection

c# - 将操作过滤器添加到部分 View

c# - 来自内部调用的函数的输出字符串 @{}

c# - Entity Framework 枚举 SqlQuery 结果

c# - 如何在aspx中循环传递DataTable值?