Skip to content

seedltd-spring-security-starter

  • 如果是单机模式建议使用seedltd.security.cache.type=memory模式,如果你是集群或者使用了redis那么我建议你使用seedltd.security.cache.type=multilevel。如果使用seedltd.security.cache.type=redis模式每个请求过来都会请求一次redis造成资源浪费。
  • multilevel模式中,在进程中有一份缓存它的有效时间是seedltd.security.cache.expiredTime的四分之一。这样做的原因是防止内存中的数据比redis中的存活时间久。如果内存中没有数据会加载redis中的数据设置在内存中,并且重置redis的过期时间为expiredTime。当用户退出的时候会通过 redis 的发布订阅方式通知到集群中的各台机器清空内存中的授权缓存
  • 登入成功后回调LoginCallback#success(httpServletRequest, userId, accessToken)接口。回传用户主键和当前登入的 token。

提示

可以通过java spi实现对SecurityPostProcessorHandle接口补充或者拓展 url 权限控制和 security 配置

Maven 依赖

xml
    <dependency>
      <groupId>org.seedltd</groupId>
      <artifactId>seedltd-spring-security-starter</artifactId>
    </dependency>

如果需要redis或者multilevel缓存,那么你还需要添加redis依赖

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

FAQ

属性配置

类型名称说明默认值
Set<String>seedltd.security.ignore不需要认证的路径
Cacheseedltd.security.cache缓存配置
Stringseedltd.security.alwaysRemember是否开启记住我模式true
Stringseedltd.security.rememberMeParameter记住我字段名称rememberMe
Stringseedltd.security.rememberMeCookieDomain记住我cookie保存域
intseedltd.security.tokenValidity记住我模式允许指定令牌的有效时间(以天为单位)30
booleanseedltd.security.captcha是否开启验证码true
intseedltd.security.retry开启验证码后登入重试几次后显示验证码,0表示开启后始终显示,默认登入3次失败即需要输入验证码。3
Stringseedltd.security.captchaKeyParameter获取图片验证码时候的key参数名captchaKay

Cache

类型名称说明默认值
longseedltd.security.cache.expiredTime过期时间,单位:秒 。如果开启多级缓存,那么一级缓存失效时间是该值的 1/47200
Stringseedltd.security.cache.prefix缓存 KEY 前缀security
Stringseedltd.security.cache.type缓存类型。memory:内存缓存,redis:redis 缓存,multilevel:多层缓存,memory 定义一级缓存,redis 定义二级缓存memory
intseedltd.security.cache.initialCapacity内存缓存初始化容器大小10240
longseedltd.security.cache.maximumSize内存缓存最大缓存条数,达到该设置值开始淘汰不活跃的数据10000

API

验证码登入

输入账户密码和图片验证登入系统。

  • Method:POST

  • URL:/auth/login

  • Parameter

    类型字段说明默认值可选值是否必填
    Stringusername登入账户--
    Stringpassword登入密码--
    Stringcaptcha图片验证码--
    String[seedltd.captcha.captchaKeyParameter]获取图片验证码时候的唯一标识,可以通过配置文件设置--

登入成功样例:

  • access_token登入令牌,后面的请求头中需要带上该令牌。Authorization:Bearer 36566fac-8cb0-4f0c-9bee-33a5e7727965
json
{
    "msg": "登入成功",
    "data": {
        "access_token": "36566fac-8cb0-4f0c-9bee-33a5e7727965"
    },
    "status": "200"
}

登入失败样例:

  • showCaptcha下一次重试登入是否需要验证码,0不需要,1需要
  • retry登入失败重试次数
json
{
    "msg": "用户名或密码错误",
    "data": {
        "retry": 1,
        "showCaptcha": 0
    },
    "status": "408"
}

{
    "msg": "验证码不能为空",
    "data": {
        "retry": 4,
        "showCaptcha": 1
    },
    "status": "405"
}

{
    "msg": "验证码错误",
    "data": {
        "retry": 5,
        "showCaptcha": 1
    },
    "status": "405"
}

手机短信登入

微信小程序登入

需要实现WeCharUserDetailsService#loadUserByOpenId接口。根据用户的openid返回用户的信息。

API

  • Method:POST

  • URL:/auth/wx-mini-app/login

  • Parameter

    类型字段说明默认值可选值是否必填
    Stringcode小程序登入code--

属性配置

类型名称说明默认值
Set<Config>seedltd.wx.miniapp.configs小程序配置-

Config

类型名称说明默认值
Stringappid设置微信小程序的 appid-
Stringsecret设置微信小程序的 Secret-

错误码

错误码错误内容
401登入过期
403没有权限访问该资源
405登入失败次数超过设定阈值
406验证码输入错误
407微信登入认证失败
408登入失败

粤ICP备2022017444号