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

Spring Security 配置类(SecurityConfig)

一、Spring Security 配置类(SecurityConfig

1. 核心配置解析

java

运行

@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); } public static void main(String[] args) { // 生成加密密码(BCrypt算法) String mszlu = new BCryptPasswordEncoder().encode("mszlu"); System.out.println(mszlu); } @Override public void configure(WebSecurity web) throws Exception { super.configure(web); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() // 角色权限控制:/user/findAll 需admin角色 .antMatchers("/user/findAll").hasRole("admin") // 静态资源放行:css、img、js、plugins无需认证 .antMatchers("/css/**", "/img/**", "/js/**", "/plugins/**").permitAll() // 自定义权限校验:/admin/** 接口通过authService的auth方法判断权限 .antMatchers("/admin/**").access("@authService.auth(request, authentication)") // /pages/** 接口需登录认证 .antMatchers("/pages/**").authenticated() .and() // 表单登录配置 .formLogin() .loginPage("/login.html") // 自定义登录页 .loginProcessingUrl("/login") // 登录请求接口 .usernameParameter("username") // 登录用户名参数名(默认username) .passwordParameter("password") // 登录密码参数名(默认password) .defaultSuccessUrl("/pages/main.html") // 登录成功跳转页 .failureUrl("/login.html") // 登录失败跳转页 .permitAll() .and() // 退出登录配置 .logout() .logoutUrl("/logout") // 退出请求接口 .logoutSuccessUrl("/login.html") // 退出成功跳转页 .permitAll() .and() .httpBasic(); } }

2. 关键配置说明

  • 密码加密:使用BCryptPasswordEncoder,通过encode()方法对密码进行不可逆加密,避免明文存储;
  • 权限控制方式
    1. 角色控制:hasRole("admin"),用户需拥有admin角色才能访问;
    2. 自定义权限:@authService.auth(request, authentication),通过自定义 Service 方法实现复杂权限校验;
    3. 静态资源放行:permitAll(),无需认证即可访问;
    4. 认证访问:authenticated(),用户登录后即可访问;
  • 表单登录流程
    • 登录请求提交到/login接口;
    • 参数名分别为usernamepassword
    • 成功跳转/pages/main.html,失败跳转回登录页;
  • 退出登录:请求/logout接口,成功后跳转到登录页。

二、后台权限管理控制器(AdminController

1. 接口定义解析

java

运行

@RestController @RequestMapping("admin") public class AdminController { @Autowired private PermissionService permissionService; // 分页查询权限列表 @PostMapping("permission/permissionList") public Result listPermission(@RequestBody PageParam pageParam) { return permissionService.listpermission(pageParam); } // 新增权限 @PostMapping("permission/add") public Result add(@RequestBody Permission permission) { return permissionService.add(permission); } // 更新权限 @PostMapping("permission/update") public Result update(@RequestBody Permission permission) { return permissionService.update(permission); } // 删除权限 @GetMapping("permission/delete/{id}") public Result delete(@PathVariable("id") Long id) { return permissionService.delete(id); } }

2. 接口功能说明

表格

接口路径请求方式功能说明请求参数
/admin/permission/permissionListPOST分页查询权限列表PageParam(分页参数:页码、页大小等)
/admin/permission/addPOST新增权限Permission(权限实体:名称、标识、路径等)
/admin/permission/updatePOST更新权限Permission(权限实体:含 ID)
/admin/permission/delete/{id}GET删除权限id(权限 ID,路径变量)

三、关联与补充

  1. 权限校验流程

    1. 用户登录后,Spring Security生成Authentication对象,包含用户角色 / 权限信息;
    2. 访问/admin/**接口时,触发@authService.auth(request, authentication)校验;
    3. PermissionService实现权限 CRUD,配合 Security 实现权限管理闭环。
http://www.jsqmd.com/news/989834/

相关文章:

  • 2026年真空感应熔炼炉推荐排行:高纯度熔炼、精密合金工艺与智能温控真空炉品牌深度解析 - 品牌发掘
  • 5步快速搭建MeshCentral:打造企业级远程设备管理平台
  • Cesium点击弹窗进阶玩法:告别InfoBox,用Vue3自定义一个可拖拽、带图表的数据面板
  • 华三三层交换机 企业完整正式版配置
  • App Inventor 2趣味项目实战:做个会聊天、能走位的语音机器人(附完整源码和组件设置截图)
  • 2026年西南地区钢模板生产行业分析:靠谱供应商的选型与评估 - 优质品牌商家
  • 告别手动复制粘贴!一个 ArcPy 脚本搞定多个 MDB/GDB 中同名图层的合并与备份
  • Vim 高阶实操技巧篇
  • DeepSeek-R1:面向工程落地的长上下文稳定型开源大模型
  • 期货量化一进程多账户:天勤 TqMultiAccount 用法边界
  • 泰安与德宏州贵金属回收行业现状与可靠生产商分析 - 优质品牌商家
  • Tushare Pro接口调用避坑指南:批量获取上证50股票数据时,如何优雅处理积分限制与数据拼接?
  • 3分钟学会OBS背景移除插件:无需绿幕的专业级虚拟背景方案
  • 别再只懂QPSK了!手把手教你用MATLAB仿真OQPSK和IJF_OQPSK(附完整代码)
  • Python量化分析实战:如何高效使用Mootdx通达信数据接口
  • 2026年靠谱的家用液压电梯/济南拼装式电梯框架源头工厂推荐 - 品牌宣传支持者
  • 免费开源摄影测量软件MicMac:从二维照片到高精度三维建模的完整指南
  • 2026年漯河车主力荐交通事故索赔律师 5家精选推荐 - 本地品牌推荐
  • ncmdumpGUI完整指南:3步轻松解密网易云音乐NCM格式文件
  • 2026年银川劳动纠纷律师推荐 陈杰律师16年实战维权经验 - 本地品牌推荐
  • 如何轻松保存网页视频:VideoDownloadHelper完整使用指南
  • 3步轻松上手:用Bliss Shader为你的Minecraft世界注入电影级光影
  • 200毫秒极速隐藏:Boss-Key如何成为你的办公室隐私守护神
  • AI说服力的本质:认知路径设计与人类不可替代性
  • SaiAdmin:如何用现代化架构解决企业级后台管理系统的三大痛点?
  • TMS320F28377D项目实战:手把手教你用SCIA调试OLED屏幕,附完整代码与避坑点
  • 5分钟掌握游戏存档编辑神器:uesave让你轻松掌控游戏进度
  • 一键部署OpenClaw:5分钟搞定本地AI办公助手
  • 漯河离婚财产分割纠纷解决难?2026年这5位离婚律师推荐 - 本地品牌推荐
  • UFS是什么