千家信息网

怎样进行添加Spring-Security支持

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,怎样进行添加Spring-Security支持,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。添加maven依赖:添加配置:新建包conf
千家信息网最后更新 2026年11月02日怎样进行添加Spring-Security支持

怎样进行添加Spring-Security支持,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

添加maven依赖:

添加配置:

新建包config: 类SecurityConfig继承于WebSecurityConfigurerAdapter.

configure(HttpSecurity http)方法: 在该方法内配置web路径和对应的权限

http.authorizeRequests().antMatchers(...): 配置web路径

permitAll(),.hasRole(),.hasAnyRole等: 配置web路径对应的权限.

例如: .antMatchers("/manage/**").hasRole("ADMIN")

表示路径/manage下的所有地址和资源,需要具有ROLE_ADMIN角色的用户才能访问.

.formLogin().loginPage("/login") // 指定了登录页面

.successForwardUrl("/sign_in").failureUrl("/sign_in")

指定spring-security认证完成(成功/失败)后回调的路径(GET),该路径通常是我们自己的controller方法,方法里可以定义登录反馈,具体见项目代码.

.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/").permitAll(): 定义注销的路径,并且所有用户都可访问该方法.

configure(AuthenticationManagerBuilder auth): 在该方法内配置自定义的安全认证类

auth.authenticationProvider(securityEncrypt): 自定义认证

auth.userDetailsService(customUserService): 自定义认证用户信息服务

至此,路径已经具备安全特性了.下面介绍登录认证和用户角色资源管理

登录认证流程:

SecurityConfig.configure: 查找用户认证提供者->SecurityEncrypt

SecurityEncrypt.authenticate: 认证用户凭证

CustomUserService.loadUserByUsername: 加载用户数据库用户信息

密码匹配:

失败: 抛出认证异常

成功: 返回认证用户信息

实际项目中的密码是经过加密的,所以需要自定义认证方案,本项目使用BCrypt加密方式,具体代码见EncryptUtil工具类.

创建类: SecurityEncrypt,自定义认证

authenticate(Authentication authentication): 该方法将对用户输入信息进行匹配

authentication.getName(): 用户输入的用户名

authentication.getCredentials(): 用户输入的密码

UserDetails user = userService.loadUserByUsername(username): 通过用户名加载数据库用户信息

认证完成后(成功/失败)回调 /sign_in.

创建类: CustomUserService,自定义加载数据库用户信息,同时加载用户的角色和角色对资源的访问权限信息.

配置认证完成后的操作:

principal: 已认证对象,null表示认证失败

SPRING_SECURITY_SAVED_REQUEST: spring-security保存到session中的属性,保存了认证前的页面.如果该属性不为null,可以传递给页面让js跳转,即实现了认证后跳转到认证前的页面.

配置某个方法的访问权限:

@PreAuthorize: 在方法执行前将会检查用户是否具有对应的权限,可选值:

Thymeleaf页面中配置权限: hello.html

xmlns:sec="http://www.thymeleaf.org/extras/spring-security": 导入security标签

sec:authorize="hasRole('USER')": 显示该对象需要具有该权限

在github项目中,我定义了两个用户角色和两个资源访问权限

角色(Roles): 注意: spring-security中用户角色默认前缀是ROLE_,后面配置时不要加.

ROLE_USER: 表示已登录用户,注册用户时自动赋予该角色

ROLE_ADMIN: 目前项目中的最高权利角色

角色权限(Privilege)

user:* 表示已注册用户资源访问权限,对应ROLE_USER

global:* 表示最高权限,该类型用户可以访问所有资源,对应ROLE_ADMIN

项目启动时会自动初始化相关权限.

本项目添加了简要的后台管理,用以保存公众号的文章信息。

看完上述内容,你们掌握怎样进行添加Spring-Security支持的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

用户 认证 权限 方法 角色 配置 信息 路径 项目 资源 页面 登录 成功 密码 数据 数据库 输入 支持 最高 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技深圳 易互联网科技有限公司 互联网科技媒体 佰商互联网科技有限公司 恒生科技互联网指数分析 安控科技rtu产品工业互联网 云创客互联网科技公司 互联网汽车科技小镇 彤创互联网科技有限公司 移动互联网年度科技创新 想开互联网科技公司怎么样 燊美集互联网科技有限公司 翼展科技 首家互联网医院 徐州市互联网科技有限公司 半导体行业属于互联网高科技类吗 广州燕处互联网科技有限公司 兰石爱特工业互联网科技分公司 杭州融税互联网科技有限公司 互联网科技创新方面的资料 利用互联网等科技手段 互联网 科技创新 互联网科技英文翻译 昊天互联网科技有限公司 江阴互联网智能科技产品进口 互联网与医疗科技 群盈汇互联网科技有限公司 2021互联网科技公司排名 智帮互联网科技公司最近动向 米泉互联网科技专业怎么样 科技美学互联网 艺术
0