SpringBoot如何集成Spring Security
发表于:2025-11-15 作者:千家信息网编辑
千家信息网最后更新 2025年11月15日,小编给大家分享一下SpringBoot如何集成Spring Security,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
千家信息网最后更新 2025年11月15日SpringBoot如何集成Spring Security
小编给大家分享一下SpringBoot如何集成Spring Security,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、前言
Spring Security 和 Apache Shiro 都是安全框架,为Java应用程序提供身份认证和授权。
Spring Security:
重量级安全框架Apache Shiro:
轻量级安全框架
关于shiro的权限认证与授权可参考小编的另外一篇文章 : SpringBoot集成Shiro 实现动态加载权限
https://blog.csdn.net/qq_38225558/article/details/101616759
二、SpringBoot集成Spring Security入门体验
基本环境 : springboot 2.1.81、引入Spring Security依赖
org.springframework.boot spring-boot-starter-security
2、新建一个controller测试访问
@RestControllerpublic class IndexController { @GetMapping("/index") public String index() { return "Hello World ~"; }}3、运行项目访问 http://127.0.0.1:8080/index
温馨小提示:在不进行任何配置的情况下,Spring Security 给出的默认用户名为user 密码则是项目在启动运行时随机生成的一串字符串,会打印在控制台,如下图:
当我们访问index首页的时候,系统会默认跳转到login页面进行登录认证
认证成功之后才会跳转到我们的index页面
三、Spring Security用户密码配置
除了上面Spring Security在不进行任何配置下默认给出的用户user 密码随项目启动生成随机字符串,我们还可以通过以下方式配置
1、springboot配置文件中配置
spring: security: user: name: admin # 用户名 password: 123456 # 密码
2、java代码在内存中配置
新建Security 核心配置类继承WebSecurityConfigurerAdapter
@Configuration@EnableWebSecurity // 启用Spring Security的Web安全支持public class SecurityConfig extends WebSecurityConfigurerAdapter { /** * 将用户设置在内存中 * @param auth * @throws Exception */ @Autowired public void config(AuthenticationManagerBuilder auth) throws Exception { // 在内存中配置用户,配置多个用户调用`and()`方法 auth.inMemoryAuthentication() .passwordEncoder(passwordEncoder()) // 指定加密方式 .withUser("admin").password(passwordEncoder().encode("123456")).roles("ADMIN") .and() .withUser("test").password(passwordEncoder().encode("123456")).roles("USER"); } @Bean public PasswordEncoder passwordEncoder() { // BCryptPasswordEncoder:Spring Security 提供的加密工具,可快速实现加密加盐 return new BCryptPasswordEncoder(); }}3、从数据库中获取用户账号、密码信息
这种方式也就是我们项目中通常使用的方式,这个留到后面的文章再说
四、Spring Security 登录处理 与 忽略拦截
相关代码都有注释相信很容易理解
@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter { /** * 登录处理 * @param http * @throws Exception */ @Override protected void configure(HttpSecurity http) throws Exception { // 开启登录配置 http.authorizeRequests() // 标识访问 `/index` 这个接口,需要具备`ADMIN`角色 .antMatchers("/index").hasRole("ADMIN") // 允许匿名的url - 可理解为放行接口 - 多个接口使用,分割 .antMatchers("/", "/home").permitAll() // 其余所有请求都需要认证 .anyRequest().authenticated() .and() // 设置登录认证页面 .formLogin().loginPage("/login") // 登录成功后的处理接口 - 方式① .loginProcessingUrl("/home") // 自定义登陆用户名和密码属性名,默认为 username和password .usernameParameter("username") .passwordParameter("password") // 登录成功后的处理器 - 方式②// .successHandler((req, resp, authentication) -> {// resp.setContentType("application/json;charset=utf-8");// PrintWriter out = resp.getWriter();// out.write("登录成功...");// out.flush();// }) // 配置登录失败的回调 .failureHandler((req, resp, exception) -> { resp.setContentType("application/json;charset=utf-8"); PrintWriter out = resp.getWriter(); out.write("登录失败..."); out.flush(); }) .permitAll()//和表单登录相关的接口统统都直接通过 .and() .logout().logoutUrl("/logout") // 配置注销成功的回调 .logoutSuccessHandler((req, resp, authentication) -> { resp.setContentType("application/json;charset=utf-8"); PrintWriter out = resp.getWriter(); out.write("注销成功..."); out.flush(); }) .permitAll() .and() .httpBasic() .and() // 关闭CSRF跨域 .csrf().disable(); } /** * 忽略拦截 * @param web * @throws Exception */ @Override public void configure(WebSecurity web) throws Exception { // 设置拦截忽略url - 会直接过滤该url - 将不会经过Spring Security过滤器链 web.ignoring().antMatchers("/getUserInfo"); // 设置拦截忽略文件夹,可以对静态资源放行 web.ignoring().antMatchers("/css/**", "/js/**"); }}以上是"SpringBoot如何集成Spring Security"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
配置
登录
用户
成功
密码
方式
认证
接口
安全
篇文章
项目
处理
内存
框架
页面
加密
代码
内容
多个
字符
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库获取24小时内的数据
数据库查询执行的两种方法
php获取数据库的值
网络安全法和数据安全法区别
第五版数据库
信息网络安全评估工程师
顺义区正规软件开发范围
赤壁市土地储备数据库建设难度
萤石云无法连接到服务器
域控服务器 转成 虚拟机
武夷山im即时通讯软件开发
学习通数据库技术习题答案
黄浦区新时代网络技术设计
广电网络技术部门
烟台有软件开发公司吗
梦幻西游开新区服务器升级
所有国家的网络安全法
敏实集团软件开发
社会网络安全问卷调查
什么是网络技术怎么样
惠普服务器总代
win7笔记本dns服务器故障
常见数据库的应用
软件测试软件开发成本
软件开发项目提成方案
强网杯人工智能网络安全挑战赛
华为服务器运维管理工具
消费全返app软件开发
东莞数据库培训哪家好
北邮网络技术研究院如何