Sa-Token 根据官方文档实现登录鉴权测试
功能实现步骤
依赖
配置文件
直接把配置文件的东西拷贝到我们自己项目的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之间需要一个空格
如果没有,则访问不到