webapi之权限验证
webapi之权限验证
一.概念:
二.demo:
1.登录时生成token:
FormsAuthenticationTicket token = new FormsAuthenticationTicket(, account, DateTime.Now,
DateTime.Now.AddHours(), 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
{
//验证
}
webapi之权限验证的更多相关文章
- Web用户的身份验证及WebApi权限验证流程的设计和实现
5. WebApi 服务端代码示例 5.1 控制器基类ApiControllerBase [csharp] view plaincopy /// /// Controller的基类,用于实现适合业 ...
- 转 Web用户的身份验证及WebApi权限验证流程的设计和实现
前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权 ...
- WebAPI接口设计:SwaggerUI文档 / 统一响应格式 / 统一异常处理 / 统一权限验证
为什么还要写这类文章?因为我看过网上很多讲解的都不够全面,而本文结合实际工作讲解了swaggerui文档,统一响应格式,异常处理,权限验证等常用模块,并提供一套完善的案例源代码,在实际工作中可直接参考 ...
- [置顶] Web用户的身份验证及WebApi权限验证流程的设计和实现 (不是Token驗證!!!不是Token驗證!!!都是基於用户身份的票据信息驗證!!!)
转发 http://blog.csdn.net/besley/article/details/8516894 不是Token驗證!!!不是Token驗證!!!都是基於用户身份的票据信息驗證!!! [ ...
- Web用户的身份验证及WebApi权限验证流程的设计和实现 asp.net mvc AllowAnonymous 不起作用, asp.net mvc 匿名访问
原文地址: https://blog.csdn.net/zjlovety/article/details/17095627 前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个 ...
- Web用户的身份验证及WebApi权限验证流程的设计和实现(尾)
5. WebApi 服务端代码示例 5.1 控制器基类ApiControllerBase [csharp] view plaincopy /// /// Controller的基类,用于实现适合业 ...
- .Net Core3.0 WebApi 项目框架搭建 四:JWT权限验证
.Net Core3.0 WebApi 项目框架搭建:目录 什么是JWT 根据维基百科定义,JWT(读作 [/dʒɒt/]),即JSON Web Tokens,是一种基于JSON的.用于在网络上声明某 ...
- Web用户的身份验证及WebApi权限验证流程的设计和实现(续)
4.4 权限属性RequireAuthorizationAttribute [csharp] view plaincopy "font-size:14px;">/// / ...
- ABP(现代ASP.NET样板开发框架)系列之18、ABP应用层——权限验证
点这里进入ABP系列文章总目录 ABP(现代ASP.NET样板开发框架)系列之18.ABP应用层——权限验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目 ...
随机推荐
- postman的使用方法详解
Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹.如果做API文 ...
- golang之strings
针对golang中的字符串的介绍,提供了一些常用的函数和方法 package main import ( "fmt" "strings" ) func main ...
- 【Rsync项目实战一】备份全网服务器数据
目录 [Rsync项目实战]备份全网服务器数据 [企业案例] 1.1 环境部署 1.2 开始部署backup服务器:Rsync服务端过程: 1.3 开始部署nfs01服务器:Rsync客户端过程: [ ...
- WPF——Sharder实现Logo走光动画
利用WPF的走光动画实现的走光动画. 资源 实例程序 示例代码 LogoEffect logoEffect = }; //要添加走光动画的物体 logo.Effect = logoEffect; D ...
- Culling & Depth Testing
[Culling & Depth Testing] Culling is an optimization that does not render polygons facing away f ...
- sql解决主键冲突
在数据插入的时候,假设主键对应的值已经存在,则插入失败!这就是主键冲突.当主键存在冲突(duplicate key)的时候,可以选择性的进行处理,即忽略.更新或者替换. 1.忽略 insert ign ...
- java常用正则校验工具类
正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...
- spring4-2-bean配置-9-通过工厂方法配置bean
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjwAAAFICAIAAADbNrOHAAAgAElEQVR4nO2dy7W0uhGFOxWn4JEXAS
- 14-敌兵布阵(HDU1166线段树 & 树状数组)
http://acm.hdu.edu.cn/showproblem.php?pid=1166 敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory ...
- 万能头文件#include<bits/stdc++.h>
最近在打cf时赛后翻阅别人的代码总是会发现一个陌生而奇怪的头文件#include<bits/stdc++.h> 奇怪之处就在于基本上所有的代码只要用了这个头文件就不再写其他头文件了. 百度 ...