KOCA版本 :4.3.0
KOCA模块 :自定义LiginService实现
模块版本 :4.3.0
场景 :自定义LiginService,实现登录接口并登录成功
问题 :登录成功后访问其他所有接口,皆报错500,后台提示:java.lang.IllegalArgumentException: Principal required
报错细节 :
尝试解决方案:@配置忽略地址仍无效。
KOCA版本 :4.3.0
KOCA模块 :自定义LiginService实现
模块版本 :4.3.0
场景 :自定义LiginService,实现登录接口并登录成功
问题 :登录成功后访问其他所有接口,皆报错500,后台提示:java.lang.IllegalArgumentException: Principal required
报错细节 :
尝试解决方案:@配置忽略地址仍无效。
KOCA版本 :4.3.0
KOCA模块 :自定义LiginService实现
模块版本 :4.3.0
场景 :自定义LiginService,实现登录接口并登录成功
问题 :登录成功后访问其他所有接口,皆报错错误500,后台提升:java.lang.IllegalArgumentException: Principal required
报错细节 :
尝试解决方案:配置忽略地址仍无效。
可能是配置问题,发一下代码我们这边验证一下
auth.yml配置如下:
koca:
# 通信加密
web:
decrypt:
# 后台是否开启通信加解密,默认false
enabled: false
# enabled: false
# 是否开启动态密钥,默认false
dynamic-key-enabled: true
# 基于开启状态,如果此配置不为空则生效。只对配置的url进行解密
need-decrypt-url:
# 黑名单,配置了此项的url请求忽略通信加解密,优先级低于白名单
ignored-decrypt-url: /test
idgenerator:
admin-seq:
auto-init: false
cache-time: 1000
security:
# 安全认证策略 默认session,还有token模式,配置token为jwt,idToken为定长21位token
strategy: session
# 认证开关,false该认证策略不生效,不会拦截
enabled: true
# 最大会话控制数-1不控制
max-sessions: -1
# 认证策略
auth-strategy:
strategy-name: kess
# strategy-name: koca
auth:
# random-code-switch: false
ignored-url:
# 忽略掉需要登录才能访问的地址
- /test/**
- /api/**
- /auth/**
- /front/profiles
- /dict/item/query
# auth-code:
# # 登录次数过多是否开启验证码,默认关闭
# enabled: true
# # 登录认证错误超过次数,出现验证码,默认3次
# failure-retry-time: 3
# 接口授权策略
api-access-control:
enabled: true
strategy-name: role
session-storage:
# 会话数据存储方式分为redis和memory,单机时memory,默认memory
strategy-name: redis
# 过期时间,单位s,默认1800s
session-expire: 1800
auth.yml配置如下:
koca:
web:
decrypt:
enabled: false
dynamic-key-enabled: true
need-decrypt-url:
ignored-decrypt-url: /test
idgenerator:
admin-seq:
auto-init: false
cache-time: 1000
security:
strategy: session
enabled: true
max-sessions: -1
# 认证策略
auth-strategy:
strategy-name: kess
auth:
ignored-url:
# 忽略掉需要登录才能访问的地址
- /test/**
- /api/**
- /auth/**
- /front/profiles
- /dict/item/query
# 接口授权策略
api-access-control:
enabled: true
strategy-name: role
session-storage:
# 会话数据存储方式分为redis和memory,单机时memory,默认memory
strategy-name: redis
# 过期时间,单位s,默认1800s
session-expire: 1800
代码如下:
老师,这个问题有验证是配置问题还是代码问题吗?或是版本问题?
解决方案:在重写LoginService,使用认证策略security:strategy: session,会话策略session-storage:strategy-name: redis时,返回值TrustedPrincipal必须设置userNo,否则底层就会按jwt方式来处理,导致出现该问题。