02. 基于url安全表达式
基于url安全表达式
基于web访问使用表达式保护url请求路径。
1) 设置url访问权限
SecurityConfiguration
1 2 3 4 5 6 7 | // 设置/user/** 访问需要ADMIN角色 http.authorizeRequests().antMatchers( "/user/**" ).hasRole( "ADMIN" ); // 设置/user/** 访问需要PRODUCT角色和IP地址为127.0.0.1.hasAnyRole("PRODUCT,ADMIN") http.authorizeRequests().antMatchers( "/product/**" ) .access( "hasAnyRole('ADMIN,PRODUCT') and hasIpAddress('127.0.0.1')" ); // 设置自定义权限不足信息. http.exceptionHandling().accessDeniedHandler(accessDeniedHandler); |
重启再次访问
MyAccessDeniedHandler自定义权限不足类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | package com.po.handler; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.stereotype.Component; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 自定义权限不足信息 */ @Component public class MyAccessDeniedHandler implements AccessDeniedHandler { @Override public void handle(HttpServletRequest httpServletRequest, HttpServletResponse resp, AccessDeniedException e) throws IOException, ServletException { resp.setStatus(HttpServletResponse.SC_FORBIDDEN); resp.setContentType( "text/html;charset=UTF-8" ); resp.getWriter().write( "权限不足,请联系管理员!" ); } } |
基于方法的权限定义:
设置用户对应的角色权限
1 2 3 4 5 6 7 | // 先声明一个权限集合, 因为构造方法里面不能传入null Collection<GrantedAuthority> authorities = new ArrayList<>(); if ( "admin" .equalsIgnoreCase(user.getUsername())) { authorities.add( new SimpleGrantedAuthority( "ROLE_ADMIN" )); } else { authorities.add( new SimpleGrantedAuthority( "ROLE_PRODUCT" )); } |
用admin用户登录
分类:
spring security
标签:
spring security
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY