Spring Security Easy Starter V0.0.1版本发布

原创 fjh 有范编程笔记 2023-02-10 20:33 发表于北京

收录于合集#Spring Security Easy Starter3个

1、V0.0.1 介绍

   Spring Security Easy Starter  V0.0.1版本一键导入即可梭哈,开启认证授权。目前实现基本常用使用的图片验证+用户名密码登录。 

  • 简单易用,引入依赖就可以用。

  • 对外无依赖,redis 可选、mysql 可选。

  • sql配置实现登录和鉴权的自定义,登录信息字段自定义。

  • 实现回调接口进行扩展。

2、仓库地址

仓库地址:https://gitee.com/fjh2017/spring-security-easy-starter.git

3、使用文档

使用文档:https://gitee.com/fjh2017/spring-security-easy-starter

  • 3.1、安装教程

  • 3.1.1、maven 依赖

<dependency>
   <groupId>io.github.fjh2021</groupId>
   <artifactId>spring-security-easy-starter</artifactId>
    <version>0.0.1</version>
</dependency>

  • 3.1.2、配置文件

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
   username: root
   password: root21.
 redis:
    host: localhost
    port: 6379
securityEasy:
  session:
   store-type: REDIS # REDIS,NONE
    time-out: 600
  kaptcha:
    time-out: 600
  auth:
    usernameQuerySql: 
    authoritiesByIdQuerySql:

配置说明

参数名称

参数说明

securityEasy.session.store-type

NONE, REDIS,JDBC,默认NONE

securityEasy.session.time-out

默认:600s

securityEasy.kaptcha.time-out

有效时间,默认600s

securityEasy.auth.usernameQuerySql

查找用户登录字段有默认值

securityEasy.auth.authoritiesByIdQuerySql

查找用户权限有默认值

  • 3.1.3、执行初始化sql  (可选)  使用默认用户表和权限表#默认密码123

CREATE TABLE `users`(
    `id`         bigint,
    `username`   varchar(50) NOT NULL COMMENT"用户名",
    `password`   varchar(500) NOT NULL COMMENT"密码",
    `enabled`    tinyint(1) NOT NULL   COMMENT"是否启用",
    `non_locked` int          DEFAULT NULL COMMENT"锁定状态",
    `nick_name`  varchar(100) DEFAULT NULL COMMENT"真实名称",
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT"用户表";
CREATE TABLE `authorities`(
    `id`        bigint,
    `authority` varchar(100) DEFAULT NULL COMMENT"权限",
    `user_id`   varchar(100) DEFAULT NULL COMMENT"用户id",
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT"权限表";
#默认密码123
INSERT INTO test.users(username, password, enabled, id, non_locked, nick_name)
VALUES('admin', '{bcrypt}$2a$10$yfc6b1M.ZfVLgpLAU1kbSe9MF.xM57uPtdyZyW3kmVjopmkL.EO5C', 1, 1, 1, '管理员');
INSERT INTO test.authorities (authority, user_id, id)
VALUES ('getCurrentUser', '1', 1);

  • 3.2 使用说明

  • 3.2.1、获取验证码

接口地址:/captchaImage请求方式:GET响应参数:

参数名称

参数说明

类型

captchaKey

验证码key

String

expire

验证码有效时间(秒)

long

base64Img

图片验证码base64

string

响应示例:

{
 "captchaKey": "ed407923-222b-4e76-baeb-2f2373934b2f",
 "expire": 600,
 "base64Img": "base64"
}

  • 3.2.2、用户登录

接口地址:/login

请求方式: post

请求参数:

参数名称

参数说明

username

用户名

password

密码

captchaKey

验证码key

captchaValue

验证码值

响应参数:

参数名称

参数说明

code

响应码,  0:成功,1:账号不存在,2:密码错误

msg

提示信息

token

登录token

响应示例:

{
  "code": 0,
  "msg": "成功",
  "token": "ed407923-222b-4e76-baeb-2f2373934b2f"
}

  • 3.3 Api 操作

  • 3.3.1、获取当前登录人信息

CustomUser customUser=HttpSessionUtil.getUser();

参数名称

参数说明

id

用户id

username

用户名称

authorities

权限

extParam

扩展字段Map

  • 3.3.2、获取扩展字段

比如:获取nick_name

String nickName=HttpSessionUtil.getUser().getExtParamByName("nick_name");

  • 3.3.3、如何加入扩展字段

直接在securityEasy.auth.usernameQuerySql  的select加入你的字段

  • 3.3.4、接口权限拦截@EasyPermission  

public class TestController {
   @GetMapping("getCurrentUser")
    @EasyPermission
    public UserDetails getCurrentUser() {
        return HttpSessionUtil.getUser();
    }
}

参考项目spring-security-esay-sample 项目

  • 3.4 扩展功能

1、实现EasyUserDetailsService接口自定登录

2、实现EasyAuthFailureService接口登录失败回调

3、实现EasyAuthSuccessService接口登录成功回调

4、实现EasyAuthEntryPointService接口没有登录回调

5、实现EasyAccessDeniedService接口没有接口权限回调

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值