您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~
有时某些业务或者功能,需要在用户请求到来之前就进行一些判断或执行某些动作,就像在Servlet中的FilterChain过滤器所做的那样,Spring Security也有类似机制。Spring Security有三种增加过滤器的方式:addFilterBefaore()、 addFilterAt()和addFilterAfter(),也可以disable掉默认的过滤器,例如:
1、http.logout().disable();或者http.headers().disable();
2、用自定义过滤器http.addFilterAt(new MyLogoutFilter(), LogoutFilter.class)替换
Spring Security的官方列出了过滤器调用顺序,具体可参考官方网站。
Spring Security已经定义好,可以直接使用的过滤器有下面这些:
比如,现在的互联网应用都有一个通用的「业务规则」是:在执行所有功能接口的时候都要检查确认接口签名的有效性。所谓接口签名其实就是一套进入准则,客户端按照服务器规定的方式向服务器证明自己确实是某个网站的用户。
那么,在Spring Security里面可以这么干:
然后修改WebSecurityConfiguration,加入刚才自定义的「过滤器」:
运行postman测试后的效果为:
增加了接口需要的签名参数。
在前面的内容中,几乎没有对Spring Security真正的核心功能,也就是认证授权做什么说明,也只是简单演示了一些admin角色登录。那么在做完前面这些铺垫之后,就需要接着来说说这一块了。
先创建创建sys_permission表,为认证授权的细化做准备:
同样,需要创建实体类和Service类。
再在LoginController中增加几个hasPermission()方法:
再来实现对hasPermission()方法的处理,也就是自定义权限处理的过滤器:
最后,再把自定义的CustomPermissionEvaluator注册到WebSecurityConfiguration中去,也就是在WebSecurityConfiguration中加入下面的代码:
运行postman进行测试,注意:启动时要在配置文件中加入下面这个配置:
spring.main.allow-bean-definition-overriding=true
从结果可以看到:
感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~
Original: https://www.cnblogs.com/xiangwang1111/p/16936846.html
Author: 湘王
Title: Spring Security(7)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/797592/
转载文章受原作者版权保护。转载请注明原作者出处!