[英]ASP.NET Identity Dynamic Role Authorization
當我不熟悉ASP.NET Identity時,我正在觀看有關MVA的視頻,當傑里米·福斯特(Jeremy Foster)演示時提出了一個問題,即如何使以下內容動態化:
[Authorize("Administrators, Users")]
public ActionResult SomeAction()
{
//Access to only admins and users
}
對此,亞當·蒂珀勒(Adam Tuliper)表示,可以通過某種方式使用Claims來完成,但是我在Internet上找不到任何具體的東西,或者我可能不太理解。 但是,如果有人可以向我展示如何做到這一點,我將不勝感激。
這很重要,因為以后,我可能希望允許另一個角色訪問SomeAction
,如果每次都需要重新編譯和部署我的應用程序,那將是不好的。 另外,我可以將控制權交給用戶,以更改其他類型用戶的訪問權限。
過去,我通過重寫Authorize
屬性來做到這一點,在該屬性中,我從cookie中提取用戶的RoleId並從數據庫中檢查用戶是否有權訪問所請求的操作。 但不確定如何使用Claims來完成。
諸如此類的事情是什么:您可以將其與數據庫一起使用,或者僅在web.config中維護授權角色的列表。
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MyCustomAuthorizationAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// Do some logic here to pull authorised roles from backing store (AppSettings, MSSQL, MySQL, MongoDB etc)
...
// Check that the user belongs to one or more of these roles
bool isUserAuthorized = ....;
if(isUserAuthorized)
return true;
return base.AuthorizeCore(httpContext);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.