0

我想通过检查正确的属性来实现重定向未经授权的用户。为此,我使用没有参数的构造函数创建了一个类属性。

[AttributeUsage(AttributeTargets.Method)]
public class LoggedAttribute:Attribute
{
    public LoggedAttribute()
    {
        //TODO
    }
}

现在将此属性分配给所有需要授权的操作方法。

    [Logged]
    public ViewResult SendMessage()
    {
        return View();
    }

我有一个带有布尔标志 IsLoggedIn 的用户模型。在发出标志的情况下,如何在类属性中检查此标志以将用户重定向到身份验证页面?

4

1 回答 1

1

在使用自定义授权属性的情况下,如下所示:

 public class AuthorizeUserAttribute : AuthorizeAttribute
 {    
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);
        if (!isAuthorized)
        {                
            //anything else you'd like to do like log it
            return false;
        }
    }
 }

然后您可以通过以下覆盖重定向它们:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    //disable the redirect
    if(disabled)
    {
        //do something else
    }else{
    filterContext.Result = new RedirectToRouteResult(
                new RouteValueDictionary(
                    new
                        { 
                            controller = "Account", 
                            action = "Login" 
                        })
                );
     }
}

更新: 你像这样使用它:

[AuthorizeUser]
public ActionResult myAction()
{
     return View();
}
于 2013-08-25T17:46:55.487 回答