.net中的身份认——AuthorizeAttribute

发布时间:2022-07-03 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了.net中的身份认——AuthorizeAttribute脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1..net自己的AuthorizeAttribute类来实现用户身份验证

AuthorizeAttribute类有两个重要的方法:AuthorizeCore和HandleUnauthorizedRequest。其中AuthorizeCore函数是用来判断一个请求是否通过用户验证,它的返回结果是一个bool。HandleUnauthorizedRequest函数则是在AuthorizeCore返回结果是false时会调用的函数。代码如下所示:

.net中的身份认——AuthorizeAttribute

 

实例:

.net中的身份认——AuthorizeAttribute

[Attributeusage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]    public class CheckAttribute : AuthorizeAttribute    {        #region Methods        PRotected override bool AuthorizeCore(HttpContextBase context)        {            VAR cookie = HttpContext.current.Request.Cookies["ctoken"];            if (cookie != null && !string.IsNullOrEmpty(cookie.Value))            {                var redis = new RedisService();                var r = redis.GetUser(cookie.Value);                if (r.ITem1 && (string.IsNullOrEmpty(LoginSySUSEr.GetUserName()) || r.Item2 != LOGinSysUser.GetUserName()))                {                    var mUser = new UserService().FindByUserName(r.Item2);                    new LoginSysUser()                    {                        Id = mUser.USERID.ToString(),                        UserName = mUser.USERNAME,                        Expires = DateTime.Now.AddMinutes(20)                    }.Login();                    return true;                }            }            var falg = !string.IsNullOrEmpty(LoginSysUser.GetId());            if (!falg)                context.Response.statusCode = 403;            return falg;        }        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)        {            base.HandleUnauthorizedRequest(filterContext);            if (filterContext.HttpContext.Response.StatusCode == 403)            {                if (filterContext.HttpContext.Request.Url != null)                {                    if (filterContext.HttpContext.Request.IsAjaxRequest())                    {                        var result = new JsonResult                        {                            Data = new                            {                                Code = -1,                                Message = "请先登录!"                            },                            JsonRequestBehavior = JsonRequestBehavior.AllowGet                        };                        filterContext.Result = result;                    }                    else                    {                        filterContext.Result = new RedirectResult("~/Sys/Account/Login");                    }                }            }        }        #endregion Methods    }

.net中的身份认——AuthorizeAttribute

2. 添加AuthorizeAttribute过滤

我们自定义个AthorizeAttribute已经实现了,接下来就是在控制器上面实现了。具体实现方法有三种

1、Controller层级添加

.net中的身份认——AuthorizeAttribute

 

 2、Action层级添加

.net中的身份认——AuthorizeAttribute

 

 3、全局添加(这个过滤器配置可以在Global.aSAX中看到)

.net中的身份认——AuthorizeAttribute

 

 

四、取消过滤

      有些页面,例如登录页面、登录请求的时候用户是肯定还没有登录的,这个时候如果我用了全局添加的话,用户岂不是永远无法登录了?那么为了使某些特定的方法可以不用验证过滤可以在特定Action、Controller上面添加以下抬头

.net中的身份认——AuthorizeAttribute

 

 AllowAonymous表示一个特性,该特性用于标记在授权期间要跳过 System.Web.Mvc.AuthorizeAttribute 的控制器和操作

 

脚本宝典总结

以上是脚本宝典为你收集整理的.net中的身份认——AuthorizeAttribute全部内容,希望文章能够帮你解决.net中的身份认——AuthorizeAttribute所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。