深圳幻海软件技术有限公司 欢迎您!

轻量级 Java 权限认证框架Sa-Token初体验

2023-02-28

作为一个又菜又爱玩的程序猴(自我感觉离猿总差一点点),GitHub拥有7.7k的star项目,自然是要找时间试试的。项目图第一次看到这个项目的时候,是在gitee的GVP推荐中看到的,一直都没有时间深入的了解。最近可用于摸鱼的时间多了起来,简单看了下这个项目的文档,惊讶于文档的详细,是我喜欢的样子(

作为一个又菜又爱玩的程序猴(自我感觉离猿总差一点点),GitHub拥有7.7k的star项目,自然是要找时间试试的。

项目图

第一次看到这个项目的时候,是在gitee的GVP推荐中看到的,一直都没有时间深入的了解。最近可用于摸鱼的时间多了起来,简单看了下这个项目的文档,惊讶于文档的详细,是我喜欢的样子(中文文档),所以决定写两行代码试试。

先建一个基础springboot项目

基础项目

项目中仅包含spring-boot-starter、spring-boot-starter-test、spring-boot-starter-web

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.0.3.RELEASE</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

随便给指定一个端口

server:
  port: 9999
  • 1.
  • 2.

启动一下

QQIcYlg">没有问题,接下来在项目中引入Sa-Token依赖

<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.28.0</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

重启项目

引入成功

项目启动时打印出来了Sa-Token的内容,引入成功。

新建一个Controller,用来测试基本功能

package com.demo.satoken;

import cn.dev33.satoken.stp.StpUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user/")
public class UserController {

    // 测试登录,浏览器访问: http://localhost:9999/user/doLogin?username=zhang&password=123456
    @RequestMapping("doLogin")
    public String doLogin(String username, String password) {
        // 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对
        if("zhang".equals(username) && "123456".equals(password)) {
            StpUtil.login(10001);
            return "登录成功";
        }
        return "登录失败";
    }

    // 查询登录状态,浏览器访问: http://localhost:9999/user/isLogin
    @RequestMapping("isLogin")
    public String isLogin() {
        return "当前会话是否登录:" + StpUtil.isLogin();
    }

}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

再次重启项目

先在浏览器打开

http://localhost:9999/user/isLogin,查询一下登录状态

未登录

登录一下

登录

再次检查登录状态

登录成功

看得出来,比起Shiro、SpringSecurity这些被广泛使用的鉴权项目,这个项目的集成使用方式可以简单到令人发指。突然更有兴趣了,后续我会继续体验这个项目,有兴趣了解这个项目的请自行查看。

文档地址:http://sa-token.dev33.cn/

项目地址:

https://gitee.com/dromara/sa-token