Asp.net

用於 Windows 身份驗證的 ASP.NET 5 自定義角色

  • May 12, 2015

我正在使用使用 Windows 身份驗證的 ASP.NET 5 建構 Intranet 類型的站點。我的身份驗證工作正常,但我不希望域中的每個人都可以訪問 Intranet 站點。我不能使用域角色,所以我在我的 SQL Server 中設置了我自己的自定義角色。我有一個將域使用者名映射到角色的表。我想將對 Intranet 站點的訪問限制為只有在我的 SQL Server 角色表中定義了角色的使用者。如何在 ASP.NET 5 中為 Windows 身份驗證設置自定義角色?謝謝!

您沒有設置自定義角色。您需要創建自定義授權屬性,如此所述。

更新:

是的,您可以全域使用您的自定義授權屬性。假設這是您的自定義授權屬性:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
   protected override bool AuthorizeCore(HttpContextBase httpContext)
   {
       var username = httpContext.User.Identity.Name;

       // Check to see if user has a role in the database
       var isAuthorized = db.User.Find(username).Any();

       return isAuthorized;
   }
}

然後,您可以在 Action 級別或 Controller 級別使用它,如下所示:

[MyAuthorize]
public ActionResult Index()
{
}

或者,您可以在 App_Start 文件夾下的 FilterConfig 類中將其註冊為全域過濾器,如下所示:

public class FilterConfig
{
   public static void RegisterGlobalFilters(GlobalFilterCollection filters)
   {
       filters.Add(new HandleErrorAttribute());
       filters.Add(new MyAuthorizeAttribute());
   }
}

引用自:https://stackoverflow.com/questions/30147627