我用于自定义授权属性,如
public class AdminAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return (base.AuthorizeCore(httpContext) && User.IsCurrentUserAdmin());
}
}
如何检查动作是否是当前用户
作为一个例子:
[OnlyYouself]
public ActionResult ViewUser(int userId)
{
...
}
表示userId =当前用户
否则重定向到上一个视图
答案 0 :(得分:1)
您可能希望构建如下所示的自定义属性:
public class AllowCurrentUserAttribute: AuthorizeAttribute
{
public string Field { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
return (base.AuthorizeCore(httpContext) && filterContext.HttpContext.User.Identity.Name == filterContext.HttpContext.Request.QueryString[Field];
}
然后像这样使用它:
[AllowCurrentUser(Field = "userId")]
public ActionResult ViewUser(int userId)
{
...
}
但是,可能有更好的方法来检查请求属性。此外,您可能希望默认值为" id"对于该字段,假设您使用默认的MVC路由。如果您的id字段被称为其他内容,则您将要更改它。
答案 1 :(得分:0)
actionContext.RequestContext.Principal.Identity