没有合适的资源?快使用搜索试试~ 我知道了~
Spring boot 和Spring Security4最新整合实例.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 30 浏览量
2022-06-23
02:08:12
上传
评论
收藏 866KB PDF 举报
温馨提示
试读
16页
Spring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdfSpring boot 和Spring Security4最新整合实例.pdf
资源推荐
资源详情
资源评论
Spring boot+Spring Security 4 配置整合实例
本例所覆盖的内容:
1. 使用 Spring Security 管理用户身份认证、登录退出
2. 用户密码加密及验证
3. 采用数据库的方式实现 Spring Security 的 remember-me 功能
4. 获取登录用户信息。
本例所使用的框架:
1. Spring boot
2. Spring MVC
3. Spring Security
4. Spring Data JPA
5. thymeleaf
说明:
1. 本文针对采用 Spring boot 微框架之用户,完全采用 Java config,不讨论 xml 配置。
2. 本例代码是完整的,请勿随意删减,否则不能运行。
一、 整合 Spring Security
在 pom.xml 中加入如下片段:
<dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
</dependency>
二、 配置 Spring Security
几乎所有配置都在下面这个文件中完成:
1
@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
//允许所有用户访问”/”和”/home”
http.authorizeRequests().antMatchers("/", "/home").permitAll()
@Autowired
private CustomUserDetailsService customUserDetailsService;//code1
@Autowired @Qualifier("dataSource1")
private DataSource dataSource1; //code2
//其他地址的访问均需验证权限
.anyRequest().authenticated()
.and()
.formLogin()
//指定登录页是”/login”
.loginPage("/login")
.permitAll()
//登录成功后可使用loginSuccessHandler()存储用户信息,可选。
.successHandler(loginSuccessHandler())//code3
.and()
.logout()
//退出登录后的默认网址是”/home”
.logoutSuccessUrl("/home")
.permitAll()
.invalidateHttpSession(true)
.and()
//登录后记住用户,下次自动登录
//数据库中必须存在名为persistent_logins的表
//建表语句见code15
.rememberMe()
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
2
}
.tokenValiditySeconds(1209600)
//指定记住登录信息所使用的数据源
.tokenRepository(tokenRepository());//code4
throws Exception {
//指定密码加密所使用的加密器为passwordEncoder()
//需要将密码加密后写入数据库 //code13
auth.userDetailsService(customUserDetailsService).passwordEncoder
//不删除凭据,以便记住用户
auth.eraseCredentials(false);
}
// Code5----------------------------------------------
@Bean
public BCryptPasswordEncoder passwordEncoder() {
}
// Code4----------------------------------------------
@Bean
public JdbcTokenRepositoryImpl tokenRepository(){
}
// Code3----------------------------------------------
@Bean
public LoginSuccessHandler loginSuccessHandler(){
}
return new LoginSuccessHandler();//code6
j.setDataSource(dataSource1);
return j;
JdbcTokenRepositoryImpl j=new JdbcTokenRepositoryImpl();
return new BCryptPasswordEncoder(4);
(passwordEncoder());//code5
}
code1----------------------------------------------
@Component
public class CustomUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String userName) throws
@Autowired //数据库服务类
private SUserService suserService;//code7
UsernameNotFoundException {
//SUser对应数据库中的用户表,是最终存储用户和密码的表,可自定义
//本例使用SUser中的email作为用户名:
SUser user = suserService.findUserByEmail(userName); //code8
if (user == null) {
throw new UsernameNotFoundException("UserName " + userName +
3
" not found");
}
Code2----------------------------------------------
@Configuration
@EnableAutoConfiguration(exclude =
{ DataSourceAutoConfiguration.class })
public class MyConfiguration {
}
Code6----------------------------------------------
//可以在这里将用户登录信息存入数据库。
public class LoginSuccessHandler extends
SavedRequestAwareAuthenticationSuccessHandler{
@Override
public void onAuthenticationSuccess(HttpServletRequest request,
HttpServletResponseresponse, Authentication authentication)
throws IOException,
ServletException {
//获得授权后可得到用户信息 可使用SUserService进行数据库操作
SUseruserDetails = (SUser)authentication.getPrincipal();
//输出登录提示信息
4
}
}
// SecurityUser实现UserDetails并将SUser的Email映射为username
return new SecurityUser(user); //code9
@Bean
public DataSource dataSource1() {
}
org.springframework.jdbc.datasource.DriverManagerDataSource ds
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/test");
ds.setUsername("root");
ds.setPassword("****");
return ds;
= new org.springframework.jdbc.datasource.DriverManagerDataSource();
剩余15页未读,继续阅读
资源评论
春哥111
- 粉丝: 1w+
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功