一、Spring Security 配置类SecurityConfig1. 核心配置解析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()方法对密码进行不可逆加密避免明文存储权限控制方式角色控制hasRole(admin)用户需拥有admin角色才能访问自定义权限authService.auth(request, authentication)通过自定义 Service 方法实现复杂权限校验静态资源放行permitAll()无需认证即可访问认证访问authenticated()用户登录后即可访问表单登录流程登录请求提交到/login接口参数名分别为username和password成功跳转/pages/main.html失败跳转回登录页退出登录请求/logout接口成功后跳转到登录页。二、后台权限管理控制器AdminController1. 接口定义解析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路径变量三、关联与补充权限校验流程用户登录后Spring Security生成Authentication对象包含用户角色 / 权限信息访问/admin/**接口时触发authService.auth(request, authentication)校验PermissionService实现权限 CRUD配合 Security 实现权限管理闭环。