package com.tong.myspringsecurity.config;
import com.tong.myspringsecurity.handler.MyAccessDeniedHandler;
import com.tong.myspringsecurity.handler.MyLoginFailureHandler;
import com.tong.myspringsecurity.handler.MyLoginSuccessHandler;
import com.tong.myspringsecurity.handler.MyLogoutSuccessHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.rememberme.PersistentTokenRepository;
// Security配置类
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private PersistentTokenRepository repository;
// 定义认证逻辑
// @Bean
// public UserDetailsService userDetailsService(){
// // 1.使用内存数据进行认证
// InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
//
// // 2.创建两个用户
// UserDetails user1 = User.withUsername("xiaotong").password("123").authorities("admin").build();
// UserDetails user2 = User.withUsername("txc").password("456").authorities("admin").build();
//
// // 3.将用户保存到内存中
// manager.createUser(user1);
// manager.createUser(user2);
//
// return manager;
// }
// Spring Security配置
@Override
protected void configure(HttpSecurity http) throws Exception {
// 自定义表单登录
http.formLogin()
.loginPage("/login.html") // 自定义登录页面
.usernameParameter("username") // 表单中的用户名项
.passwordParameter("password") // 表单中的密码项
.loginProcessingUrl("/login") // 表单提交路径,提交后执行认证逻辑
// .successForwardUrl("/main") // 登录成功后的跳转路径
.successHandler(new MyLoginSuccessHandler()) // 登录成功处理器
// .failureForwardUrl("/fail"); // 登录失败后的跳转路径
.failureHandler(new MyLoginFailureHandler()); // 登录失败处理器
// 权限拦截配置
http.authorizeRequests()
.antMatchers("/login.html").permitAll() // 登录页不需要认证
.antMatchers("/fail").permitAll() // 失败页不需要认证
// .antMatchers("/reportform/find").hasAnyAuthority("/reportform/find")
// .antMatchers("/salary/find").hasAnyAuthority("/salary/find")
// .antMatchers("/staff/find").hasAnyAuthority("/staff/find")
.anyRequest().authenticated(); //其余所有请求都需要认证
// 权限拦截配置
// http.authorizeRequests()
// .antMatchers("/login.html").permitAll() // 登录页不需要认证
// .anyRequest().access("@myAuthorizationService.hasPermission(request,authentication)");
// 退出登录配置
http.logout()
.logoutUrl("/logout")
// .logoutSuccessUrl("/login.html")
.logoutSuccessHandler(new MyLogoutSuccessHandler())
.clearAuthentication(true)
.invalidateHttpSession(true);
// 记住我配置
http.rememberMe()
.userDetailsService(userDetailsService) // 登录逻辑交给哪个对象
.tokenRepository(repository)// 令牌repository
.tokenValiditySeconds(30); // 保存时间。单位:秒
// 异常处理
http.exceptionHandling()
.accessDeniedHandler(new MyAccessDeniedHandler());
// 关闭csrf防护
http.csrf().disable();
}
@Override
public void configure(WebSecurity web) throws Exception {
// 静态资源放行
web.ignoring().antMatchers("/css/**");
}
// 密码编码器
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的安全性。它构建在Spring Framework基础之上,提供了全面的安全解决方案,包括身份验证、授权、攻击防护等功能。 Spring Security的主要特点包括: 身份验证:Spring Security支持多种身份验证方式,包括基本认证、表单登录、LDAP认证、OAuth等,同时也支持自定义的认证方式。 授权:Spring Security提供了细粒度的授权机制,可以根据角色、权限进行访问控制。开发者可以通过配置或编程的方式定义哪些用户可以访问哪些资源。 攻击防护:Spring Security内置了对常见攻击(如跨站点请求伪造、会话固定攻击、点击劫持等)的防护机制,帮助开发者提高应用程序的安全性。 会话管理:Spring Security支持对用户会话状态的管理,包括会话超时、并发控制、集群环境下的分布式会话管理等。 Web集成:Spring Security能够无缝集成到Spring框架和Spring MVC中,提供了过滤器、标签库等工具,简化了权限控制和
资源推荐
资源详情
资源评论
收起资源包目录
最详细Spring Security学习资料(源码) (156个子文件)
SecurityConfig.class 7KB
MyUserDetailService.class 3KB
Users.class 3KB
Permission.class 3KB
Role.class 3KB
MyLoginSuccessHandler.class 2KB
MyController.class 2KB
UsersMapperTest.class 2KB
PasswordEncoderTest.class 2KB
MyAuthorizationService.class 2KB
MyLoginFailureHandler.class 1KB
MyLogoutSuccessHandler.class 1KB
MyAccessDeniedHandler.class 1KB
RememberMeConfig.class 1KB
MyspringsecurityApplication.class 1KB
PageController.class 819B
MyspringsecurityApplicationTests.class 595B
UsersMapper.class 547B
mvnw.cmd 7KB
styles.css 5KB
styles.css 5KB
.gitignore 395B
.gitignore 218B
login.html 1KB
login.html 1KB
main.html 618B
main.html 618B
fail.html 204B
fail.html 204B
noPermission.html 190B
noPermission.html 190B
myspringsecurity.iml 11KB
maven-wrapper.jar 57KB
SecurityConfig.java 5KB
MyUserDetailService.java 2KB
MyController.java 2KB
MyAuthorizationService.java 1KB
RememberMeConfig.java 1KB
MyLoginSuccessHandler.java 1010B
PasswordEncoderTest.java 948B
MyLoginFailureHandler.java 738B
MyLogoutSuccessHandler.java 712B
MyAccessDeniedHandler.java 664B
MyspringsecurityApplication.java 654B
UsersMapperTest.java 652B
UsersMapper.java 393B
PageController.java 392B
MyspringsecurityApplicationTests.java 236B
Users.java 213B
Permission.java 191B
Role.java 184B
HELP.md 2KB
mvnw 10KB
maven-wrapper.properties 233B
qaplug_profiles.xml 41KB
workspace.xml 7KB
pom.xml 3KB
Project_Default.xml 1KB
jarRepositories.xml 864B
compiler.xml 838B
UsersMapper.xml 819B
UsersMapper.xml 809B
misc.xml 795B
Maven__org_thymeleaf_extras_thymeleaf_extras_springsecurity5_3_0_4_RELEASE.xml 767B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_2.xml 736B
Maven__org_thymeleaf_extras_thymeleaf_extras_java8time_3_0_4_RELEASE.xml 725B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_6_5.xml 713B
Maven__org_springframework_boot_spring_boot_starter_thymeleaf_2_6_5.xml 706B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 700B
Maven__org_springframework_boot_spring_boot_starter_security_2_6_5.xml 699B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_2.xml 695B
Maven__org_springframework_boot_spring_boot_starter_logging_2_6_5.xml 692B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_6_5.xml 685B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_2.xml 681B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_6_5.xml 678B
Maven__org_springframework_security_spring_security_crypto_5_6_2.xml 673B
Maven__org_springframework_security_spring_security_config_5_6_2.xml 673B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_6_5.xml 671B
Maven__org_springframework_boot_spring_boot_starter_json_2_6_5.xml 671B
Maven__org_springframework_boot_spring_boot_starter_test_2_6_5.xml 671B
Maven__org_springframework_boot_spring_boot_starter_web_2_6_5.xml 664B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_60.xml 660B
Maven__org_springframework_security_spring_security_test_5_6_2.xml 659B
Maven__org_springframework_security_spring_security_core_5_6_2.xml 659B
Maven__org_springframework_security_spring_security_web_5_6_2.xml 652B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_2.xml 651B
Maven__org_thymeleaf_thymeleaf_spring5_3_0_15_RELEASE.xml 641B
Maven__org_springframework_boot_spring_boot_starter_2_6_5.xml 636B
Maven__org_junit_platform_junit_platform_commons_1_8_2.xml 633B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 633B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 633B
Maven__com_baomidou_mybatis_plus_boot_starter_3_5_0.xml 630B
Maven__com_fasterxml_jackson_core_jackson_databind_2_13_2.xml 630B
Maven__org_junit_platform_junit_platform_engine_1_8_2.xml 626B
checkstyle-idea.xml 626B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_60.xml 625B
Maven__com_baomidou_mybatis_plus_annotation_3_5_0.xml 616B
Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml 615B
Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml 615B
Maven__org_springframework_boot_spring_boot_test_2_6_5.xml 615B
共 156 条
- 1
- 2
资源评论
童小纯
- 粉丝: 3w+
- 资源: 289
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功