SpringSecurity权限控制实现原理解析
2020-03-11 17:51
1106 查看
菜单控制:
可以用来判断这个用户是不是有这些角色,没有的话就不展示
数据控制:
由于数据都是从后端查的,在后端控制权限就可以了
<!-- 开启权限控制注解支持 jsr250-annotations="enabled"表示支持jsr250-api的注解,需要jsr250-api的jar包 pre-post-annotations="enabled"表示支持spring表达式注解 secured-annotations="enabled"这才是SpringSecurity提供的注解 --> <security:global-method-security jsr250-annotations="enabled" pre-post-annotations="enabled" secured-annotations="enabled"/>
注:这个要放在mvc的容器中,因为子容器可以访问到主容器,主容器访问不到子容器
/表示当前类中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能访问 @Controller @RequestMapping("/product") @RolesAllowed({"ROLE_ADMIN","ROLE_PRODUCT"})//JSR-250注解 public class ProductController { @RequestMapping("/findAll") public String findAll(){ return "product-list"; } } //表示当前类中findAll方法需要ROLE_ADMIN或者ROLE_PRODUCT才能访问 @Controller @RequestMapping("/product") public class ProductController { @RequestMapping("/findAll") @PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_PRODUCT')")//spring表达式注解 public String findAll(){ return "product-list"; } } //表示当前类中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能访问 @Controller @RequestMapping("/product") @Secured({"ROLE_ADMIN","ROLE_PRODUCT"})//SpringSecurity注解 public class ProductController { @RequestMapping("/findAll") public String findAll(){ return "product-list"; } }
但是会报403无法访问
方式一:在 spring-security.xml配置文件中处理
<!--设置可以用spring的el表达式配置Spring Security并自动生成对应配置组件(过滤器)--> <security:http auto-config="true" use-expressions="true"> <!--省略其它配置--> <!--403异常处理--> <security:access-denied-handler error-page="/403.jsp"/> </security:http>
方式二:在 web.xml中处理
<error-page> <error-code>403</error-code> <location>/403.jsp</location> </error-page>
方式三:编写异常处理器
/** * @author WGR * @create 2020/3/2 -- 17:33 */ @ControllerAdvice public class ControllerExceptionAdvice { //只有出现AccessDeniedException异常才调转403.jsp页面 @ExceptionHandler(AccessDeniedException.class) public String exceptionAdvice(){ System.out.println("1234"); return "forward:/403.jsp"; } }
注:如果是spring项目,也要把这个扫描进去。
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- SpringSecurity 3.2入门(9)自定义权限控制代码实现
- 实用PHP会员权限控制实现原理分析
- 实用PHP会员权限控制实现原理分析 .
- 深入解析yii权限分级式访问控制的实现(非RBAC法)
- SpringBoot中使用Springsecurity实现权限控制
- 实用PHP会员权限控制实现原理分析
- 深入解析yii权限分级式访问控制的实现(非RBAC法)
- SpringMVC结合Shiro注解实现权限控制原理分析
- 权限控制原理及其具体实现思路
- Vue 动态路由的实现以及 Springsecurity 按钮级别的权限控制
- Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
- 通过网页去实现远程控制软件的上线!博客,贴吧,云盘等等网页方式实现上线原理解析,绕过域名拦截
- 实用PHP会员权限控制实现原理分析
- Xianfeng轻量级Java中间件平台:基于RBAC模型实现权限控制的原理
- Xianfeng轻量级Java中间件平台:基于RBAC模型实现权限控制的原理
- java共享锁实现原理及CountDownLatch解析
- javaWeb用户权限控制简单实现
- Subversion之路--实现精细的目录访问权限控制(v1.0 更新于2006.12.05) (一)
- 通过servlet.jsp.tagext.TagSupport的自定义标签实现按钮权限控制
- SpringBoot中使用Spring Security实现权限控制