Asp.net
用於 Windows 身份驗證的 ASP.NET 5 自定義角色
我正在使用使用 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()); } }