嗯,这个是用户没有权限
1、之前拦截不到现在可以拦截到了,是哪里的问题
2、auth.yml配置再发份出来
1、我们微服务中有多个application启动类,只有一个服务存放了application.yml文件,我启动的是没有application.yml文件的服务,所以读取不到配置,我更换到有Yml文件的服务后,成功读取到配置了;
2、还有个疑问,如果各个服务当中无法依赖一个服务的yml,那是不是每个服务都要配置一个yml?
3、我看了下我们项目里没有auth.yml这个配置文件,这个用户权限的关系在哪里配置的?
那就把全量配置发过来看一下
server:
port: xx
spring:
application:
name: rms-bootapp-applicant
servlet:
multipart:
max-file-size: 30MB
max-request-size: 30MB
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
#使用fastDFS需添加如下配置
fdfs:
so-timeout: 2500 # 读取时间
connect-timeout: 600 # 连接超时时间
tracker-list: ip:port #tracker服务配置地址列表
pool:
max-total: 200 # 连接池最大数量
max-total-per-key: 50 # 单个tracker最大连接数
max-wait-millis: 5000 # 连接耗尽最大等待时间 毫秒
koca:
mybatis:
# 框架使用第三方插件PaeHelper来实现分页查询的功能,采用AOP的方法,使用 @Aspect 注解把分页dao层接口栏截器类标识为一个切面供容器读取
# 切入点:com.szkingdom 下所有package为mapper的java类中的所有方法
# page-advisor: execution(* com.szkingdom.**.*Mapper..*(..)) || execution(* com.szkingdom.**.ext.*MapperExt..*(..))
page-advisor: execution(* com.szkingdom..*mapper..*(..)) || execution(* com.szkingdom..*mapper.ext..*(..)) # 这个可以
# page-advisor: execution(* com.szkingdom.**.mapper.ext..*(..))
# page-advisor: execution(* com.szkingdom.rfkj.rms.applicant.info.mapper.ext..*(..))
idgenerator:
# 不依赖zookeeper的雪花算法主键生成方式,其中workId和datacenterId是用于区分不同应用的配置,不同的应用,两个值的组合不应相同,否则有主键冲突的风险
defaultStrategy: idwork_snowflake
# 使用了美团leaf的雪花算法实现,该实现使用zookeeper获取唯一的workId值,并解决了雪花算法的时钟回拨问题。
# defaultStrategy: leaf_snowflake
workId: 11
datacenterId: 12
# registry:
# type: eureka
# # service-url: http://ip:port/eureka
# service-url: http://ip:port/eureka
# # service-url: http://localhost:8085/eureka
# #是否进行服务发现
# discovery: true
# #是否进行服务注册
# register: true
# #连接超时时间,单位秒
# connection-timeout: 60
# instance:
# #是否使用IP代替hostname
# prefer-ip-address: true
#主机名称
#hostname:
#实例IP地址
#ipAddr: ip
#端口
#port: {server.port}
#是否为SSLPort
#secure: false
#实例初始状态,默认为"UP"
#status: UP
#自定义数据内容
#metadata:
# jdbc:
# defaultDataSourceId: rms # 默认数据源
# dataSources:
# - id: rms # 数据源id
# pool:
# # 数据源连接池配置 数据源对应的更多属性可直接在此追加
# url: jdbc:mysql://ip:port/rms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowMultiQueries=true # 数据源url
# username: xx # 数据源用户名
# password: xxxx # 加密后的数据源密码
# initialSize: 5 # Drud数据源属性 连接池的初始连接数
# minIdle: 5 # Druid数据源属性 连接池的最小数据库连接数
# maxActive: 20 # Druid数据源属性 连接池的最大数据库连接数
# maxWait: 60000 # Druid数据源属性 配置获取连接等待超时的时间
security:
auth:
#忽略掉需要登录才能访问的地址
ignored-url:
# - /*/**
#- /cust/custService
#- /user/pwd/rule
#登录的用户名参数,就是当前传入的用作用户名参数的名称,默认值loginName
login-name-param: loginName
# 登录的密码参数,当前传入的作为密码的名称,默认值password
login-password-param: password
# 登录提交的地址,默认值/auth/login
login-submit-url: /auth/login
# 登录成功页面地址,默认值"/#/login"
login-page-url: /#/login
# 退出地址,默认值/auth/logout
logout-submit-url: /auth/logout
random-code-switch: true # CryptoUtils.sm4Encrypt 随机码开关,默认true开启,及登录时是否会用randomcode加解密,1.4详解
auth-code:
enabled: true #登录次数过多是否开启验证码,默认关闭
failure-retry-time: 5 #登录认证错误超过次数,出现验证码,默认3次
# 未登录或会话过期后的跳转地址
static-page:
index: /login/login.html
admin-management: #adminManagement认证,这个是管理端点的,一些endpoint,是否需要认证。
#可通过management.endpoints.web.base-path配置,默认/actuator
enabled: false #是否开启,默认false
login-name: xx
login-password: xxx
api-access-control:
enabled: false #默认关闭
strategy-name: default #接口权限控制策略,默认default,可通过实现ApiControlService接口自定义实现
#以下为spring security相关配置
strategy: token #模式选择,还有token模式
enabled: true #认证开关,false该认证策略不生效,不会拦截
csrf:
enabled: true #csrf 防御开关 2.6.0新增,默认关闭,开启后请求需要携带csrf token才能正常访问
max-sessions: -1 #最大会话控制数-1不控制
max-sessions-prevents-login: false #默认false
jwt:
secret: xxxx #jwt模式的secret,需要至少64个字节
expireTime: 86400000 #过期时间,单位毫秒ms
refreshTime: 300000 #自动刷新时间,当token还有refreshTime就过期的时候将刷新返回新的token,单位ms。
auth-strategy: #认证策略,分为basic和其他,1.3详细说明
strategy-name: koca
# username: xxx
# password: xxx
session-storage:
strategy-name: memory #会话数据存储方式分为redis和memory,单机时memory,默认memory
session-expire: 1800 #过期时间,单位s,默认1800s
name-space: #redis相关登录次数与时间存储key前缀
multi-login: #多种登录策略
- type: phoneAuthcode #手机验证码登录
loginUrl: /auth/phone/authcode #登录url
strategy-name: koca_phone_authcode #使用的loginservice策略,koca_phone_authcode为本地调用, remote_phone_authcode为远程调用,默认remote_phone_authcode
auth-url: #远程调用url,为远程调用方式使用
- type: phonePassword #手机密码登录模式
loginUrl: /auth/phone/password #手机密码登录url
tokenEnabled: true #登录token模式开关,true为token,false为session,不填为与auth.security.strategy相同
strategy-name: koca_phone_password #默认remote_phone_password
认证服务是需要配置的,其它服务可以不用配置
你这个配置看上去是没有问题的
问题已解决:
1、业务服务和认证服务需要引用auth-server和auth-client包
2、对于不需要 CSRF防御的业务服务,关闭csrf: enabled: 的配置
3、不使用Jwt模式时不要配置jwt: secret
感谢赵老师细心解答
嗯,不用客气,以后我们就用这种模式,先论坛发帖,如果解决不了我们再远程 ,远程之后的解决方案再回归到论坛,方便日后出现重复的问题我们有处可查。
还有个问题想问下,如果从数据库层面去创建账号,需要初始化数据到哪几张表?我目前往Koca_user_info_base和koca_user_pwd插入了数据但是登录失败

