zoukankan      html  css  js  c++  java
  • webapi之权限验证

    webapi之权限验证

    一.概念:

    二.demo:

    1.登录时生成token:

      FormsAuthenticationTicket token = new FormsAuthenticationTicket(0, account, DateTime.Now,
                      DateTime.Now.AddHours(1), true, account,
                      FormsAuthentication.FormsCookiePath);
                    loginRltViewModel.TokenStr = FormsAuthentication.Encrypt(token);

    2.global文件中配置:

     GlobalConfiguration.Configure(WebApiConfig.Register);

    3.WebApiConfig文件中添加到过滤器中:

      config.Filters.Add(new RequestAuthorizeAttribute());//校验token

    4.创建一个类文件用来校验token,此文件必须继承ActionFilterAttribute类:

        public class RequestAuthorizeAttribute : ActionFilterAttribute
        {
    
            //重写基类的验证方式,加入我们自定义的Ticket验证  前端 XHR.setRequestHeader('Authorization', 'BasicAuth ' + Ticket);
            public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext context)
            {
                base.OnActionExecuting(context);
                if (context.ActionDescriptor.ActionName != "CheckLogin")
                {
                    bool checkRlt = false;
                    var authorization = context.Request.Headers.Authorization;
                    if ((authorization != null) && (authorization.Parameter != null))
                    {
                        checkRlt = CheckToken(authorization.Parameter);
                    }
                    if (!checkRlt)
                    {
                        context.Response = context.Request.CreateResponse(HttpStatusCode.OK, "Err:9001");       
                    }
                }
            }
    
            public static bool CheckToken(string token)
            {
                if (HttpRuntime.Cache[token] != null)
                {
                    return true;
                }
                return false;
            }
    }

    跳过验证的方法:  

    比如登陆不需要验证,就可以在登陆的操作上增加[AllowAnonymous]特性

    前提是需要如下代码

    var customAttributes = actionContext.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().OfType<AllowAnonymousAttribute>();
                var isAllow = customAttributes.Any(x => x is AllowAnonymousAttribute);
    if(isAllow)
    {
    //跳过
    }else
    {
    //验证
    }
  • 相关阅读:
    项目记录,仿今日头条app
    数组过滤后的重新排序问题
    用函数刷新页面内容比刷新页面要好
    html js绑定键盘按键触发事件(按回车键登陆)
    图片上传前压缩 lrz库
    微信 获取openid
    旅游项目总结
    UWP深入学习五: 传感器与搜索、共享及链接
    UWP深入学习四:动画及图像
    UWP深入学习三:依赖属性、附加属性和数据绑定
  • 原文地址:https://www.cnblogs.com/zlp520/p/9414793.html
Copyright © 2011-2022 走看看