Spring Boot 系列教程 您所在的位置:网站首页 springboot集成satoken Spring Boot 系列教程

Spring Boot 系列教程

#Spring Boot 系列教程 | 来源: 网络整理| 查看: 265

前言

过去的Web项目开发里,我们使用最多的两种权限框架有Shiro和Spring Security,Shiro轻量级、入门门槛低功能相对也强大;Spring Security背景强大,功能丰富,入门门槛相对高,配置稍微复杂,由Spring团队开源。而现如今将介绍一款轻量级、功能强大且几乎零配置的sa-token权限框架, sa-token是一个JavaWeb权限认证框架,强大、简单、好用。

一、核心知识 1. 什么是sa-token

sa-token是一个JavaWeb权限认证框架,强大、简单、好用

登录验证、权限验证、自定义session会话、踢人下线、持久层扩展、无cookie模式、模拟他人账号、多账号体系、注解式鉴权、Spring集成...

零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有

与其它权限认证框架相比,sa-token有以下两点优点:

上手简单:能自动化的配置全部自动化,不让你费脑子 功能强大:能涵盖的功能全部涵盖,不让你用个框架还要自己给框架打各种补丁 2. sa-token 😋

在线文档:sa-token.dev33.cn/

3. 框架优点

与其它权限认证框架相比,sa-token尽力保证两点:

上手简单:能自动化的配置全部自动化,不让你费脑子 功能强大:能涵盖的功能全部涵盖,不让你用个框架还要自己给框架打各种补丁

二、涵盖功能 登录验证 权限验证 自定义session会话 踢人下线 模拟他人账号 持久层扩展(集成redis) 多账号认证体系(比如一个商城项目的user表和admin表) 无cookie模式(APP、小程序等前后台分离场景) 注解式鉴权(优雅的将鉴权与业务代码分离) 零配置与Spring等框架集成 ... 三、集成 1. maven依赖

在项目中直接通过 pom.xml 导入 sa-token 的依赖即可

cn.dev33 sa-token 1.4.0 复制代码 2. 获取源码 github地址: github.com/click33/sa-… gitee地址: gitee.com/sz6/sa-toke… 3. jar包下载

点击下载:sa-token-1.4.0.jar

四、准备工作

本篇将带你从零开始集成sa-token,从而让你快速熟悉sa-token的使用姿势,以maven + springboot为例

五、工程搭建 1. 创建SpringBoot项目

在这里插入图片描述

1.2 引入sa-token的依赖 cn.dev33 sa-token 1.4.0 复制代码 2. 引入jar包依赖 在 pom.xml 中添加依赖,完整pom如下: org.springframework.boot spring-boot-starter-web org.projectlombok lombok true cn.dev33 sa-token 1.4.0 复制代码 3. 配置文件 你可以零配置启动项目 但同时你也可以在application.yml中增加如下配置,定制性使用框架: server: port: 8070 spring: # sa-token配置 sa-token: # token名称(同时也是cookie名称) token-name: satoken # token有效期,单位s 默认30天 timeout: 2592000 # 在多人登录同一账号时,是否共享会话(为true时共用一个,为false时新登录挤掉旧登录) is-share: true # 是否在cookie读取不到token时,继续从请求header里继续尝试读取 is-read-head: true # 是否在header读取不到token时,继续从请求题参数里继续尝试读取 is-read-body: true # 是否在初始化配置时打印版本字符画 is-v: true 复制代码 如果你习惯于 application.properties 类型的配置文件,那也很好办: 百度: springboot properties与yml 配置文件的区别 4. 创建主类

在项目中新建包 com.pj ,在此包内新建主类 SaTokenDemoApplication.java,输入以下代码:

@SaTokenSetup // 标注启动 sa-token @SpringBootApplication public class SaTokenDemoApplication { public static void main(String[] args) throws JsonProcessingException { SpringApplication.run(SaTokenDemoApplication.class, args); // run--> System.out.println("启动成功:sa-token配置如下:" + SaTokenManager.getConfig()); } } 复制代码 5. 运行

运行代码,当你从控制台看到类似下面的内容时,就代表框架已经成功集成了 运行结果 在这里插入图片描述

六、普通spring环境

普通spring环境与springboot环境大体无异,只不过需要在项目根目录下手动创建配置文件sa-token.properties来完成配置即可。

七、sa-token常用API介绍

官方提供了一系列的常用API接口,这里只简单介绍一下登录相关的API接口: sa-token.dev33.cn/doc/#/use/l…

1. 登录验证 1.1 核心思想 所谓登录验证,说白了就是限制某些接口只有登录后才能访问(如:查询我的账号资料) 如何判断你有没有登录?当然是登录成功后我给你做个标记 在需要鉴权的接口里检查标记,有标记者视为已登录,无标记者视为未登录 根据以上思路,我们很容易想到以下api: 1.2 具体API StpUtil.setLoginId(Object loginId) 标记当前会话登录的账号id 建议的参数类型:long | int | String, 不可以传入复杂类型,如:User、Admin等等 StpUtil.logout() 当前会话注销登录 StpUtil.isLogin() 获取当前会话是否已经登录,返回true=已登录,false=未登录 StpUtil.checkLogin() 检验当前会话是否已经登录, 如果未登录,则抛出异常:NotLoginException 扩展:NotLoginException 对象可通过 getLoginKey() 方法获取具体是哪个 StpLogic 抛出的异常 StpUtil.getLoginId()

获取当前会话登录id, 如果未登录,则抛出异常:NotLoginException 类似API还有:

StpUtil.getLoginIdAsString() 获取当前会话登录id, 并转化为String类型 StpUtil.getLoginIdAsInt() 获取当前会话登录id, 并转化为int类型 StpUtil.getLoginIdAsLong() 获取当前会话登录id, 并转化为long类型 StpUtil.getLoginId(T defaultValue) 获取当前会话登录id, 如果未登录,则返回默认值 (defaultValue可以为任意类型) 类似API还有: StpUtil.getLoginId_defaultNull() 获取当前会话登录id, 如果未登录,则返回null getLoginIdByToken(String tokenValue) 获取指定token对应的登录id,如果未登录,则返回 null 八、项目测试 1. 启动SpringBoot项目

启动SpringBoot示例项目,控制天打印sa-token信息如下:

在这里插入图片描述

九、源码下载 1. 源码

github.com/Thinkingcao…

2. 参考

官方文档: sa-token.dev33.cn/

总结

每一种Java框架在每个不同时期都有对应的优缺点,相比Shiro、Spring Security 这些权限框架,sa-token显得相对轻量级,因为sa-token仅仅封装了一些常用的登录验证、权限验证、自定义session会话、踢人下线等功能,是一款强大、简单、好用的权限框架。

长按下图二维码,关注公众号「Thinking曹」,在通往Java架构的路上我想与你一同前行,共同进步!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有