想象一下,你有服務基於控制器和動作名稱這樣它返回角色的數組:
public class RoleProvider
{
public string[] Get(string controller, string action)
{
// get your roles based on the controller and the action name
// wherever you want such as db
// I hardcoded for the sake of simplicity
return new string[]{"Student", "Teacher"};
}
}
現在,您可以編寫自己的授權屬性是這樣的:
public class DynamicRoleAuthorizeAttribute: AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
var controller = httpContext.Request.RequestContext
.RouteData.GetRequiredString("controller");
var action = httpContext.Request.RequestContext
.RouteData.GetRequiredString("action");
// feed the roles here
Roles = string.Join("," ,_rolesProvider.Get(controller, action));
return base.AuthorizeCore(httpContext);
}
}
現在使用您的自定義授權屬性而不是像這樣的舊版本:
[DynamicRoleAuthorize]
public ActionResult MyAction()
{
}
您是否已經在項目中使用角色? – SeM
這裏我從AspNetRole表中檢索了角色。我種下這個桌子有四個角色。但我擔心的是,我可以如何讓管理員將操作方法的權限從UI分配給角色。此用戶界面用於演示目的。我想要像這樣創建。 –
我已經問過這個問題,知道您是使用分配角色還是使用否的部分,所以如果是的話,當您檢查/取消選中複選框時,您只需要使用該部分。 – SeM