# 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页