问题描述
我的用户角色链接在我的控制器上方的自定义 AuthorizeAttribute 中。(我使用 Asp.net 框架)
[PermissionBaseAuthorize(Role = "super_admin")]
public ActionResult Details()
{
return View()
}
解决方法
对于问题1,可以使用继承自AuthorizeAttribute的类,然后检查是否用OnAuthorization
登录,然后用User.IsInRole("Admin")
检查用户角色
然后您可以使用 AuthorizationContext
和 HttpContext
发送错误消息并重定向...
这是您可以开始使用的代码:
public class PermissionBaseAuthorize: AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (HttpContext.Current.Session("UserID") == null || !HttpContext.Current.Request.IsAuthenticated)
{
}
else if (User.IsInRole("Admin"))
filterContext.HttpContext.Response.StatusCode = 401;
filterContext.Result = new RedirectResult("your url")
...
对于问题 2,您需要添加一些代码,例如:
@if (User.IsInRole("Admin"))
{
@Html.ActionLink("Edit","Edit",new { id = item.ID }) <text>|</text>
...
}
我建议你看看下面的教程,它可以帮助你。 Role-Based Menus in MVC,但最好从头阅读全文。
编辑:
这里还有一些使用 AuthorizationContext 的教程: Custom REST authorization in ASP.Net MVC