Sa-Token学习笔记-06
Sa-Token学习笔记-06
二级认证
在某些敏感操作下,我们需要对已登录的会话进行二次验证。
比如代码托管平台的仓库删除操作,尽管我们已经登录了账号,当我们点击 [删除] 按钮时,还是需要再次输入一遍密码,这么做主要为了两点:
- 保证操作者是当前账号本人。
- 增加操作步骤,防止误删除重要数据。
这就是我们本篇要讲的 —— 二级认证,即:在已登录会话的基础上,进行再次验证,提高会话的安全性。
相关API
// 在当前会话 开启二级认证,时间为120秒
StpUtil.openSafe(120);
// 获取:当前会话是否处于二级认证时间内
StpUtil.isSafe();
// 检查当前会话是否已通过二级认证,如未通过则抛出异常
StpUtil.checkSafe();
// 获取当前会话的二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证)
StpUtil.getSafeTime();
// 在当前会话 结束二级认证
StpUtil.closeSafe();
测试代码
package com.hayaizo.satoken.controller;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author moxiao
*/
@RestController
@RequestMapping("/safe/")
public class SafeAuthController {
// 删除仓库 ---- http://localhost:8081/safe/deleteProject
@RequestMapping("deleteProject")
public SaResult deleteProject() {
// 首先检查是否完成了二级认证
if(!StpUtil.isSafe()){
return SaResult.error("仓库删除失败,请完成二级认证后再次访问接口");
}
// 走到这里说明完成了二级认证
return SaResult.ok("仓库删除成功!");
}
// 提供密码的二级认证接口 ---- http://localhost:8081/safe/openSafe?password=123456
@RequestMapping("openSafe")
public SaResult openSafe(String password){
if("123456".equals(password)){
// 对比成功,为当前会话开启二级认证,有效期为120s,在120s内调用则无需再进行二级认证
StpUtil.openSafe(120);
return SaResult.ok("二级认证成功!");
}
return SaResult.error("二级认证失败!");
}
// 手动关闭二级认证 ---- http://localhost:8081/safe/closeSafe
@RequestMapping("closeSafe")
public SaResult closeSafe(){
StpUtil.closeSafe();
return SaResult.ok();
}
}
版权申明
本文系作者 @hayaizo 原创发布在Hello World站点。未经许可,禁止转载。
暂无评论数据