若依用户分表鉴权
若依自带了管理后台及服务端,但项目通常还有客户端业务。那客户端如何实现鉴权?最简单的方式是在原有的 sys_user 上增加业务逻辑,但随着项目越做越大耦合度也会成倍增加。那解耦就势在必行。
本篇将介绍如何让客户端拥有一套独立表来实现用户鉴权。完整代码参见。
创建 auths Maven 模块
一个项目有可能有多个业务用户鉴权需求,所有的鉴权都放在这个模块中进行管理。
接下来我们将以创建 news
业务出发,目录文件结构如下:
1 | codezm-auths |
auths/src/main/java/com/codezm/auths/news/config/NewsSecurityConfig.java
1 | package com.codezm.auths.news.config; |
auths/src/main/java/com/codezm/auths/news/config/properties/PermitAllUrlProperties.java
1 | package com.codezm.auths.news.config.properties; |
auths/src/main/java/com/codezm/auths/news/constant/CacheConstants.java
1 | package com.codezm.auths.news.constant; |
auths/src/main/java/com/codezm/auths/news/domain/NewsLoginBody.java
1 | package com.codezm.auths.news.domain; |
auths/src/main/java/com/codezm/auths/news/domain/NewsLoginUser.java
1 | package com.codezm.auths.news.domain; |
auths/src/main/java/com/codezm/auths/news/domain/NewsUser.java
1 | package com.codezm.auths.news.domain; |
auths/src/main/java/com/codezm/auths/news/manager/factory/AsyncFactory.java
1 | package com.codezm.auths.news.manager.factory; |
auths/src/main/java/com/codezm/auths/news/manager/AsyncManager.java
1 | package com.codezm.auths.news.manager; |
auths/src/main/java/com/codezm/auths/news/mapper/LoginUserMapper.java
1 | package com.codezm.auths.news.mapper; |
auths/src/main/java/com/codezm/auths/news/security/context/AuthenticationContextHolder.java
1 | package com.codezm.auths.news.security.context; |
auths/src/main/java/com/codezm/auths/news/security/context/PermissionContextHolder.java
1 | package com.codezm.auths.news.security.context; |
auths/src/main/java/com/codezm/auths/news/security/filter/JwtAuthenticationTokenFilter.java
1 | package com.codezm.auths.news.security.filter; |
auths/src/main/java/com/codezm/auths/news/security/handle/AuthenticationEntryPointImpl.java
1 | package com.codezm.auths.news.security.handle; |
auths/src/main/java/com/codezm/auths/news/security/handle/LogoutSuccessHandlerImpl.java
1 | package com.codezm.auths.news.security.handle; |
auths/src/main/java/com/codezm/auths/news/security/UserPwdAuthenticationProvider.java
1 | package com.codezm.auths.news.security; |
auths/src/main/java/com/codezm/auths/news/security/UserPwdAuthenticationToken.java
1 | package com.codezm.auths.news.security; |
auths/src/main/java/com/codezm/auths/news/service/impl/LoginUserServiceImpl.java
1 | package com.codezm.auths.news.service.impl; |
auths/src/main/java/com/codezm/auths/news/service/ILoginUserService.java
1 | package com.codezm.auths.news.service.impl; |
auths/src/main/java/com/codezm/auths/news/service/LoginService.java
1 | package com.codezm.auths.news.service; |
auths/src/main/java/com/codezm/auths/news/service/TokenService.java
1 | package com.codezm.auths.news.service; |
auths/src/main/java/com/codezm/auths/news/service/UserPwdServiceImpl.java
1 | package com.codezm.auths.news.service; |
auths/src/main/java/com/codezm/auths/news/untils/SecurityUtils.java
1 | package com.codezm.auths.news.untils; |
/auths/src/main/resources/mapper/news/LoginUserMapper.xml
1 |
|
主 pom.xml 文件增加模块依赖
pom.xml
1 | <dependencyManagement> |
ruoyi-framework
增加依赖配置
ruoyi-framework/pom.xml
1 | <dependencyManagement> |
ruoyi-framework 中创建基础 spring security 配置文件
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityBaseConfig.java
1 | package com.ruoyi.framework.config; |
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
1 | import org.springframework.beans.factory.annotation.Autowired; |
增加 token 环境变量
ruoyi-admin/src/main/resources/application.yml
1 | +# token配置 |
登录 Controller
1 | package com.codezm.news.controller; |
表SQL
1 | CREATE TABLE `news_user` ( |