注解
controller的注释
@CrossOrigin
可以处理跨域请求,让你能访问不是一个域的文件
allowCredentials属性:配置是否允许发送Cookie,用于 凭证请求, 默认不发送cookie
方法的注释:
@RequestBody
取出整个前端传送过来的json数据
@RequestBody(required = false) json数据为空,就会报空数据的错误 可防止报错
@RequestMapping
处理请求地址映射
属性:
value: 指定请求的实际地址;
method: 指定请求的method类型, GET、POST、PUT、DELETE等;
Ajax
Ajax即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
axios 基于promise用于浏览器和node.js的http客户端。
Token
就是获取信息的凭证,就是一堆字符串
JWT
JSON Web Tokens, 一种Token实现方式
Spring Security
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
不能脱离Spring,Shiro的功能它都有
Restfull API
一种架构风格的应用程序接口,使用HTTP请求访问和 数据,该数据可用于GET,PUT,POST和DELETE 数据类型,这数据类型指与资源有关的操作的读取,更新,创建和删除。
返回类
BaseResponse()
Shiro
Apache Shiro是Java的一个安全框架
简单 灵活
HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息,没办法区分每次请求的不同。
【Token的验证过程】
客户端:用户名和密码请求登录
服务器:收到请求,验证用户名和密码,验证成功后,分发一个Token返回给客户端
客户端:将Token存储,例如放在 Cookie 里或者 Local Storage 里,后续每次请求,带上此Token
服务器:收到请求,验证Token是否正确,验证成功返回请求数据
这套流程实现的是 非公开api访问 必须经过token认证的用户 才可以访问接口 满足报告需求
而 不必 不同角色对应不同接口权限
【验证过程 另一种描述】
- 我们POST用户名与密码到/login进行登入,如果成功返回一个加密token,失败的话直接返回401错误。
- 之后用户访问每一个需要权限的网址请求必须在header中添加Authorization字段,例如Authorization: token,token为密钥。
- 后台会进行token的校验,如果不通过直接返回401。
首先是登录流程:
当用户输入账号和密码后,调登录接口(登录接口不需要鉴权,放行),后台查询用户和匹配密码成功后,返回一个jwt 的token(包含userId的字段)。
然后前端拿到这个token放到header中,下次调用接口需要带上token。
权限验证:
当访问某个接口需要鉴权时,会被拦截类JWTFilter拦截,然后验证token的合法性,查询数据库该用户有哪些权限,
然后在比对用户是否有这个接口的权限,有则放行,无则授权失败,禁止访问。