c# – 如果返回false,如何创建将重定向到Login的自定义属性,类似于Authorize属性 – ASP.NET MVC

我尝试使用谷歌搜索关于自定义属性的一些东西,但我仍然不确定如何去做….

一旦用户登录,我就会在会话cookie(ex UserID)中存储用户的一些重要细节..而我想要做的就是创建一个属性,如果

if(Session [“UserID”] == null)

然后它会像[Authorize]属性一样重定向到登录.这样我就可以在各个控制器级别应用此属性.

我应该覆盖Authorize属性吗?创建一个新的?如何让它重定向到登录?

我也在使用ASP.NET MVC 4

谢谢你的帮助

您可以根据需要创建自定义AuthorizeAttribute并覆盖AuthorizeCore()和HandleUnauthorizedRequest().添加您自己的逻辑,如有必要,将执行检查和重定向.

我只是展示一个使用MVC的ActionFilterAttribute的简单示例(这不是进行身份验证/授权的最佳位置)

public class VerifyUserAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var user = filterContext.HttpContext.Session["UserID"];
        if (user == null)
            filterContext.Result = new RedirectResult(string.Format("/User/Login?targetUrl={0}",filterContext.HttpContext.Request.Url.AbsolutePath));
    }
}

在正确的用户验证后,不要忘记在/ User / Login操作方法中设置Session [“UserID”]变量.

翻译自:https://stackoverflow.com/questions/32925219/how-to-create-a-custom-attribute-that-will-redirect-to-login-if-it-returns-false