Sa-Token 根据官方文档实现登录鉴权测试
- 功能实现步骤
- 依赖
- 配置文件
- 启动类
- 创建 controller
- 启动项目
- 测试
- 不用密码登录
- 查看cookie状态
- 密码登录
- 查看cookie状态
- 修改token名称
- Apipost 测试
- 无 cookie 模式【使用 token】
- 后端将 token 返回到前端
- 修改代码:
- 测试:
- 访问登录接口,成功返回【token】
- 没有携带 token 查询登录状态
- 携带 token 查询登录状态
- 前端将 token 提交到后端
- 修改 token 风格和添加前缀
- 测试
功能实现步骤
依赖
在 SpringBoot 环境集成
配置文件
直接把配置文件的东西拷贝到我们自己项目的application.yml即可
启动类
启动类我也给加个打印看看
创建 controller
创建controller ,直接把代码拷贝来修改就好了
启动项目
测试
不用密码登录
此时登录时失败的
查看cookie状态
密码登录
把 sa-token 放进了 cookie 里面了
查看cookie状态
后续就能根据cookie里面有没有satoken来判断这个用户有没有登录
修改token名称
token名称是在这里,我们自己定义的
如图,我就可以把【satoken】改名成我自己想要的名称
Apipost 测试
因为apipost没有cookie,此时是这样的,登录状态是false
然后我们再给他在 header 加上cookie参数,携带上cookie之后,登录状态就显示成功
无 cookie 模式【使用 token】
注意:上面是把 token 放在了 cookie 里面。
传统的 pc 形式,都是登录之后,写入 cookie。前端再次请求的时候,带着 cookie 一个身份识别就可以完成认证。
但是 【小程序、app 】是没有 cookie 这个概念的。
为了更好的扩展,我们就直接选择 token的模式。
将 token 放入 header 来实现用户身份的识别与鉴权。
现在我们不用 cookie,用纯 token 的方式来实现。
后端将 token 返回到前端
首先,在前端调用登录接口,请求登录的时候,由后端返回一个token给前端。
// 官网的示例
// 登录接口
@RequestMapping("doLogin")
public SaResult doLogin() {// 第1步,先登录上 StpUtil.login(10001);// 第2步,获取 Token 相关参数 SaTokenInfo tokenInfo = StpUtil.getTokenInfo();// 第3步,返回给前端 return SaResult.data(tokenInfo);
}
修改代码:
修改下controller的登录代码
// 测试登录,浏览器访问: http://localhost:3011/user/doLogin?username=zhang&password=123456@RequestMapping("doLogin")public SaResult doLogin(String username, String password) {// 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对if("zhang".equals(username) && "123456".equals(password)) {// 第一步:先登录上StpUtil.login(10001);// 第二步:获取 token 相关参数SaTokenInfo tokenInfo = StpUtil.getTokenInfo();// 第三步:把 token 返回给前端return SaResult.data(tokenInfo);}return SaResult.error("登录失败");}
测试:
访问登录接口,成功返回【token】
没有携带 token 查询登录状态
把 cookie 删除后,查询【登录状态】,可以看到是 false
携带 token 查询登录状态
前端将 token 提交到后端
修改 token 风格和添加前缀
自定义 Token 风格
自定义 Token 前缀
在配置文件修改
测试
测试:记得前端在提交token时,前缀和token之间需要一个空格
如果没有,则访问不到