当前位置: 首页 > wzjs >正文

购物网站排名榜大连网红培训基地

购物网站排名榜,大连网红培训基地,网站建设什么行业,多行业品牌企业公司网站模板🌟Spring Security 权限配置详解:从基础到进阶 Spring Security 是一个功能强大、可高度自定义的安全框架,主要用于为基于 Spring 的应用程序提供身份验证和授权功能。 本篇文章将带你深入理解 Spring Security 的权限配置机制,掌…

🌟Spring Security 权限配置详解:从基础到进阶

Spring Security 是一个功能强大、可高度自定义的安全框架,主要用于为基于 Spring 的应用程序提供身份验证和授权功能。
本篇文章将带你深入理解 Spring Security 的权限配置机制,掌握从用户认证到权限控制的核心配置方式。


一、Spring Security 的核心概念

在开始配置之前,先简单了解几个核心名词:

名词说明
Authentication认证,验证用户身份(用户名+密码)
Authorization授权,判断当前用户是否有访问某资源的权限
SecurityContext安全上下文,保存当前用户的认证信息
UserDetailsService加载用户信息的接口
GrantedAuthority授权对象,表示用户拥有的权限
SecurityFilterChainSpring Security 的过滤器链配置入口

二、Spring Security 权限配置方式概览

权限控制一般包含以下几种形式:

  1. 基于 URL 路径 的权限控制(最常用)
  2. 基于 方法注解 的权限控制(如 @PreAuthorize
  3. 自定义 AccessDecisionManager 权限决策器

三、配置示例:Spring Boot + Spring Security 权限控制

1. 引入依赖

<!-- Spring Security 依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. 基础配置类

使用 SecurityFilterChain 代替旧版 WebSecurityConfigurerAdapter

@Configuration
@EnableMethodSecurity  // 启用方法级权限控制
public class SecurityConfig {@Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception {return http.authorizeHttpRequests(auth -> auth.requestMatchers("/admin/**").hasRole("ADMIN").requestMatchers("/user/**").hasAnyRole("USER", "ADMIN").requestMatchers("/", "/login").permitAll().anyRequest().authenticated()).formLogin(login -> login.loginPage("/login").defaultSuccessUrl("/home").permitAll()).logout(logout -> logout.logoutUrl("/logout").logoutSuccessUrl("/login")).csrf(csrf -> csrf.disable()).build();}
}

3. 自定义用户信息(UserDetailsService)

@Service
public class MyUserDetailsService implements UserDetailsService {@Overridepublic UserDetails loadUserByUsername(String username) {// 模拟从数据库中查询if ("admin".equals(username)) {return User.withUsername("admin").password("{noop}admin123") // {noop}表示明文密码.roles("ADMIN").build();} else if ("user".equals(username)) {return User.withUsername("user").password("{noop}user123").roles("USER").build();}throw new UsernameNotFoundException("用户不存在");}
}

四、基于注解的权限控制(推荐)

Spring Security 支持通过注解方式对方法或类进行权限控制:

@RestController
@RequestMapping("/data")
public class DataController {@GetMapping("/admin")@PreAuthorize("hasRole('ADMIN')")public String adminData() {return "这是管理员数据";}@GetMapping("/user")@PreAuthorize("hasAnyRole('USER','ADMIN')")public String userData() {return "这是用户数据";}
}

常用注解说明

注解说明
@PreAuthorize方法执行前权限判断
@PostAuthorize方法执行后权限判断
@Secured("ROLE_ADMIN")只允许指定角色访问(默认需加 ROLE_

五、自定义权限判断表达式

假如你想用业务逻辑判断权限,可以这样:

@PreAuthorize("@authService.canAccess(#userId)")
public String getUserData(Long userId) {return "业务数据";
}

AuthService 中定义权限逻辑:

@Component
public class AuthService {public boolean canAccess(Long userId) {// 获取当前登录用户的 IDAuthentication auth = SecurityContextHolder.getContext().getAuthentication();String currentUsername = auth.getName();// 自定义逻辑,比如根据用户名判断是否有权限查看这个 userIdreturn true;}
}

六、权限控制最佳实践

  • 权限与角色分离:不要把角色当权限用,系统更复杂时建议独立权限表。
  • 接口权限控制+方法权限控制双保险
  • 菜单权限与接口权限绑定,提升用户体验。
  • 使用数据库动态加载权限,支持多角色多权限灵活管理。

七、总结

Spring Security 提供了强大且灵活的权限控制机制,支持从 URL 到方法粒度的精细化配置。通过自定义 UserDetailsServiceSecurityFilterChain 和注解控制权限,我们可以轻松实现企业级权限管理。

✅ 核心关键词回顾:

  • SecurityFilterChain
  • UserDetailsService
  • @PreAuthorize
  • hasRole / hasAuthority
  • 动态权限 + 自定义判断逻辑


文章转载自:

http://MHwz6U7A.Lqznq.cn
http://Dc2I4Aiu.Lqznq.cn
http://KJVPhveD.Lqznq.cn
http://5z2uVO0M.Lqznq.cn
http://CANvK1rS.Lqznq.cn
http://gyeA41E6.Lqznq.cn
http://Rqz11H1E.Lqznq.cn
http://KhBpDKYL.Lqznq.cn
http://O4KV0AOZ.Lqznq.cn
http://8wUj44wG.Lqznq.cn
http://ZsSjOzCJ.Lqznq.cn
http://yiDY1lIT.Lqznq.cn
http://g84XP3pI.Lqznq.cn
http://igvFwfCy.Lqznq.cn
http://2mHTIsJ5.Lqznq.cn
http://Pyoj3oTA.Lqznq.cn
http://HlYjBfFz.Lqznq.cn
http://1c48LevN.Lqznq.cn
http://jsitci6u.Lqznq.cn
http://mEY9lWun.Lqznq.cn
http://XzSJxtQT.Lqznq.cn
http://7yZ1edvM.Lqznq.cn
http://4rpmJ9v3.Lqznq.cn
http://Za7SnC93.Lqznq.cn
http://hlclDJq8.Lqznq.cn
http://ky21DUB1.Lqznq.cn
http://D94f5tCP.Lqznq.cn
http://9mSBGKaM.Lqznq.cn
http://cOVAZko0.Lqznq.cn
http://1xELkCr3.Lqznq.cn
http://www.dtcms.com/wzjs/641873.html

相关文章:

  • 做网站的是什么工程师网站维护排名
  • 中国建设工程协会网站正品手表官网
  • 华为一站式服务建站外贸 网站 seo
  • 阿里云服务器做网站安全吗功能多的免费网站建设
  • 岳阳建设厅网站做网站销售有前景吗
  • 外贸 模板网站 定制网站电商网站设计图片素材
  • 帝国cms手机网站教程dede一键更新网站出错
  • 江苏江都建设集团有限公司官方网站网站推广工具大全
  • 网站建设的培训心得wordpress shortcodes
  • 网站开发背景和意义辽宁建设工程信息网企业人员调动
  • 西安保障性住房建设投资中心网站中国百强城市榜单发布2021
  • 许昌专业做网站公司电商说白了做啥
  • 网站二次开发合同济南正规的网站制作
  • 网站制作公司要文化建设费正规网站建设服务中心
  • 网站总体结构优秀校园景观设计
  • 建云购网站吗湖北省建设厅网站
  • 网站跳转链接生成百度指数查询官方下载
  • 电脑维修 做网站手机pc端浏览器
  • 郑州专业网站建设搭建公司网上购物网站开发
  • 网站 永久关停 请示网站怎么做链接
  • 医疗网站建设教程保定干洗机做网站
  • wordpress app模板下载失败网站 流程优化
  • 炫酷的电商网站设计wordpress页面使用方法
  • 福州网站建设推广服务简单网页设计模板代码
  • 中国黄金集团j建设公司网站WordPress连接微信 微信机器人
  • 移动网站和定制网站wordpress网站秒开
  • 大气产品展示网站源码好123上网主页免费
  • 青阳做网站樱花动漫imomoe官网入口
  • 高端网站设计哪家公司好wordpress 机器人
  • 俄语 网站定制网站本地企业