# xbd-security **Repository Path**: wusyJava/xbd-security ## Basic Information - **Project Name**: xbd-security - **Description**: 基于Spring Security的二次封装安全框架,配置简单易懂,使用方便,已集成90%的内容,只需实现少量内容即可使用Spring Security安全框架 - **Primary Language**: Java - **License**: Artistic-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-10-13 - **Last Updated**: 2022-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # xbd-security #### 项目介绍 基于Spring Security的二次封装安全框架,配置简单易懂,使用方便,已集成90%的内容,只需实现少量内容即可使用Spring Security安全框架 #### 软件架构 1. Spring Security 5.0.8.RELEASE 2. spring framework 5.0.8.RELEASE 3. slf4j 1.7.25 #### 起步 下载源码,打包引入 #### 配置 ```java package com.xbd.xbdframework.security.test.config; import com.xbd.xbdframework.security.configure.AbstractWebSecurityConfigurer; import com.xbd.xbdframework.security.configure.WebSecurityProperties; import com.xbd.xbdframework.security.service.ResourcesLoaderService; import com.xbd.xbdframework.security.service.UserLoaderService; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringSecurityConfig extends AbstractWebSecurityConfigurer { @Bean @ConfigurationProperties(prefix = "xbd.security") @Override public WebSecurityProperties webSecurityProperties() { return super.webSecurityProperties(); } @Override protected UserLoaderService userLoaderService() { return new UserLoaderServiceImpl(); } @Override public ResourcesLoaderService resourcesLoaderService() { return new ResourcesLoaderServiceImpl(); } } ``` #### 配置项说明 ##### LoginProperties
配置项 说明 默认值
loginProcessingUrl spring security默认拦截路径 无,spring security默认为/login
loginPage 登录页 /login,spring security默认为/login
defaultSuccessUrl 登录成功页
defaultFailureUrl 默认登录失败页 loginPage?type=LoginType.FAILURE
captchaErrorUrl 验证码错误页 loginPage?type=LoginType.CAPTCHAERROR
otherExceptionUrl 其它异常页 loginPage?type=LoginType.OTHEREXCEPTION
defaultSsoLoginUrl 默认单点登录页 /sso/login
##### AntMatchersProperties
配置项 说明 默认值
unAuthenticateUrls 不授权即可访问的路径
webIgnoreUrls spring security忽略资源路径 "/config/**", "/css/**", "/fonts/**", "/img/**", "/js/**"
##### SessionManagementProperties
配置项 说明 默认值
sessionInvalidUrl 无效session跳转页 loginPage?type=LoginType.SESSIONINVALID
sessionExpiredUrl session失效跳转页 loginPage?type=LoginType.SESSIONEXPIRED
maximumSessions session最大值 1
maxSessionsPreventsLogin session达到最大值之后是否阻值后续登录 true
##### RememberMeProperties 后续扩展 ##### LogoutProperties
配置项 说明 默认值
logoutUrl 退出登录页 无,spring security默认为/logout
logoutSuccessUrl 退出登录成功页 无,spring security默认为/login?logout
invalidateHttpSession 是否将session置为无效 true
clearAuthentication 是否清除授权信息 true
#### 开发 ##### UserLoaderService ```java package com.xbd.xbdframework.security.test.service; import com.xbd.xbdframework.security.service.UserLoaderService; import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; public class UserLoaderServiceImpl implements UserLoaderService { @Override public UserDetails getUserByUsername(String s) { return new User("账号", "密码", AuthorityUtils.createAuthorityList(new String[] {})); } @Override public UserDetails getUserBySignature(String s) { return new User("账号", "密码", AuthorityUtils.createAuthorityList(new String[] {})); } } ``` ##### ResourcesLoaderService ```java package com.xbd.xbdframework.security.test.service; import com.xbd.xbdframework.security.service.ResourcesLoaderService; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class ResourcesLoaderServiceImpl implements ResourcesLoaderService { @Override public Map> loadResources() { return new HashMap<>(); } } ``` ##### SpringSecurityConfig ```java package com.xbd.xbdframework.security.test.config; import com.xbd.xbdframework.security.configure.AbstractWebSecurityConfigurer; import com.xbd.xbdframework.security.configure.WebSecurityProperties; import com.xbd.xbdframework.security.service.ResourcesLoaderService; import com.xbd.xbdframework.security.service.UserLoaderService; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringSecurityConfig extends AbstractWebSecurityConfigurer { @Bean @ConfigurationProperties(prefix = "xbd.security") @Override public WebSecurityProperties webSecurityProperties() { return super.webSecurityProperties(); } @Override protected UserLoaderService userLoaderService() { return new UserLoaderServiceImpl(); } @Override public ResourcesLoaderService resourcesLoaderService() { return new ResourcesLoaderServiceImpl(); } } ``` #### 注意事项 1. 密码加密方式默认为BCryptPasswordEncoder,如有需要,可覆盖 2. invalidateHttpSession属性为true时,/login?logout默认302到session失效页,为false时,可停留在/login?logout页