Web APIs 基于令牌TOKEN验证的实现
2016-07-06 14:56
387 查看
Web APIs 基于令牌TOKEN验证的实现
概述:
ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作。但是在使用API的时候总会遇到跨域请求的问题, 特别各种APP万花齐放的今天,对API使用者身份角色验证是不能避免的(完全开发的API不需要对使用者身份角色进行管控,可以绕过),这篇文章就来谈谈基于令牌TOKEN身份验证的实现。问题:
对于Web API的选择性的开放,使用者无论使用AJAX,还是HttpClient对接,总要对使用者的身份角色进行验证,然而使用API总有跨域使用情况的存在,这样就导致所有基于cookie验证方式都不再适用于API的验证。原因:
比如,基于form表单验证的基础是登录验证成功后,用户的信息存在缓存或数据库或cookie,无论哪种方式存储用户信息,都不能绕过对cookie的使用,所以form表单验证方法对于禁用cookie的浏览器都不能正常使用,结论就是不能使用cookie 的环境就不能使用基本的form表单验证方式。因此WEB API 由于跨域的使用,导致cookie不能正常工作,所以不能再使用基于表单验证的方式来实现。基于令牌TOKEN验证方法的实现:
方法一:1. 实现对缓存TOKEN的管理,以防IIS服务器的宕机,可以对TOKEN进行持久化存储处理,每次IIS重启重新初始化已经登录成功TOKEN缓存。实现如下:
View Code
2. 新建ApiAuthorizeAttribute类,继承AuthorizeAttribute,重写方法IsAuthorized,这样基于TOKEN验证方式就完成了。实现如下:
View Code
3. 登录实现
View Code
4. 测试API
这样就可以配合.NET原有的 AllowAnonymousAttribute 属性使用, 使用方法如下:
不需要验证身份的 类或者Action 添加 [AllowAnonymous]属性,否则添加[ApiAuthorize]
View Code
相关文章推荐
- python转lua最容易掉进去的坑--作用域
- 一个鼠标键盘控制两台甚至多台主机的方法--Synergy
- 网络编程之HttpURLConnection
- Java 理论与实践: 正确使用 Volatile 变量
- 进程间通信(二)—消息队列
- 读写锁
- 如何手动刷新camera摄像的数据
- studio简单设置
- putty使用密钥登录服务器
- java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required
- Memcache需要注意的几点【小强测试班学员作品】
- Hive学习总结之五:HBase和Hive的集成
- 手把手教你做安豆计算器(六)-横屏界面
- PL/SQL报错:Initialization error Oracle client not properly installed
- Linux chmod递归设置目录755和文件644权限
- 进程间通信(一)—管道
- C语言学习笔记之文件的分割与合并
- Qt学习之路(25): QPainter(续)
- 寰宇极速浏览器怎么设置兼容模式?
- 图文详解SQL Server 2008 R2安装配置方法