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

怀安网站制作58同城新密网站建设

怀安网站制作,58同城新密网站建设,邢台做网站的公司哪家好?,婚纱摄影网站设计思路Spring Security 中对于权限控制默认已经提供了很多了#xff0c;但是#xff0c;一个优秀的框架必须具备良好的扩展性#xff0c;恰好#xff0c;Spring Security 的扩展性就非常棒#xff0c;我们既可以使用 Spring Security 提供的方式做授权#xff0c;也可以自定义授…Spring Security 中对于权限控制默认已经提供了很多了但是一个优秀的框架必须具备良好的扩展性恰好Spring Security 的扩展性就非常棒我们既可以使用 Spring Security 提供的方式做授权也可以自定义授权逻辑。一句话你想怎么玩都可以今天松哥来和大家介绍一下 Spring Security 中四种常见的权限控制方式。表达式控制 URL 路径权限表达式控制方法权限使用过滤注解动态权限四种方式我们分别来看。1.表达式控制 URL 路径权限首先我们来看第一种就是通过表达式控制 URL 路径权限这种方式松哥在之前的文章中实际上和大家讲过这里我们再来稍微复习一下。Spring Security 支持在 URL 和方法权限控制时使用 SpEL 表达式如果表达式返回值为 true 则表示需要对应的权限否则表示不需要对应的权限。提供表达式的类是 SecurityExpressionRoot可以看到SecurityExpressionRoot 有两个实现类表示在应对 URL 权限控制和应对方法权限控制时分别对 SpEL 所做的拓展例如在基于 URL 路径做权限控制时增加了 hasIpAddress 选项。我们来看下 SecurityExpressionRoot 类中定义的最基本的 SpEL 有哪些可以看到这些都是该类对应的表达式这些表达式我来给大家稍微解释下表达式备注hasRole用户具备某个角色即可访问资源hasAnyRole用户具备多个角色中的任意一个即可访问资源hasAuthority类似于 hasRolehasAnyAuthority类似于 hasAnyRolepermitAll统统允许访问denyAll统统拒绝访问isAnonymous判断是否匿名用户isAuthenticated判断是否认证成功isRememberMe判断是否通过记住我登录的isFullyAuthenticated判断是否用户名/密码登录的principle当前用户authentication从 SecurityContext 中提取出来的用户对象这是最基本的在它的继承类中还有做一些拓展我这个我就不重复介绍了。如果是通过 URL 进行权限控制那么我们只需要按照如下方式配置即可protected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/admin/**).hasRole(admin).antMatchers(/user/**).hasAnyRole(admin, user).anyRequest().authenticated().and()...}这里表示访问 /admin/** 格式的路径需要 admin 角色访问 /user/** 格式的路径需要 admin 或者 user 角色。2.表达式控制方法权限当然我们也可以通过在方法上添加注解来控制权限。在方法上添加注解控制权限需要我们首先开启注解的使用在 Spring Security 配置类上添加如下内容ConfigurationEnableGlobalMethodSecurity(prePostEnabled true,securedEnabled true)public class SecurityConfig extends WebSecurityConfigurerAdapter {......}这个配置开启了三个注解分别是PreAuthorize方法执行前进行权限检查PostAuthorize方法执行后进行权限检查Secured类似于 PreAuthorize这三个结合 SpEL 之后用法非常灵活这里和大家稍微分享几个 Demo。Servicepublic class HelloService {PreAuthorize(principal.username.equals(javaboy))public String hello() {return hello;}PreAuthorize(hasRole(admin))public String admin() {return admin;}Secured({ROLE_user})public String user() {return user;}PreAuthorize(#age98)public String getAge(Integer age) {return String.valueOf(age);}}第一个 hello 方法注解的约束是只有当前登录用户名为 javaboy 的用户才可以访问该方法。第二个 admin 方法表示访问该方法的用户必须具备 admin 角色。第三个 user 方法表示方法该方法的用户必须具备 user 角色但是注意 user 角色需要加上 ROLE_ 前缀。第四个 getAge 方法表示访问该方法的 age 参数必须大于 98否则请求不予通过。可以看到这里的表达式还是非常丰富如果想引用方法的参数前面加上一个 # 即可既可以引用基本类型的参数也可以引用对象参数。缺省对象除了 principal 还有 authentication(参考第一小节)。3.使用过滤注解Spring Security 中还有两个过滤函数 PreFilter 和 PostFilter可以根据给出的条件自动移除集合中的元素。PostFilter(filterObject.lastIndexOf(2)!-1)public List getAllUser() {List users new ArrayList();for (int i 0; i 10; i) {users.add(javaboy: i);}return users;}PreFilter(filterTarget ages,value filterObject%20)public void getAllAge(List ages,List users) {System.out.println(ages ages);System.out.println(users users);}在 getAllUser 方法中对集合进行过滤只返回后缀为 2 的元素filterObject 表示要过滤的元素对象。在 getAllAge 方法中由于有两个集合因此使用 filterTarget 指定过滤对象。4.动态权限动态权限主要通过重写拦截器和决策器来实现这个我在 vhr 的文档中有过详细介绍大家在公众号【江南一点雨】后台回复 888 可以获取文档我就不再赘述了。5.小结好啦今天就喝小伙伴们稍微聊了一下 Spring Security 中的授权问题当然这里还有很多细节后面松哥再和大家一一细聊。到此这篇关于详解Spring Security 中的四种权限控制方式的文章就介绍到这了,更多相关Spring Security 权限控制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家
http://wiki.neutronadmin.com/news/196459/

相关文章:

  • 站长友情链接开发网站需要什么人员
  • 做暧暧小视频网站自己的网站怎么做关键词优化
  • 河北邯郸中考成绩查询时间抖音seo关键词优化
  • 手机如何制作游戏品牌seo培训
  • 上海短期网站建设培训哈铁工程建设公司网站
  • 网站建设与维护的认识wordpress加中文
  • 苏州建设造价信息网站网站制作系统哪个好
  • 网站源码如何安装网站后台管理系统模板下载
  • 网站管理有哪些不会做网站
  • 做移动端网站软件用linux做网站
  • 网站开发必备人员长沙建站工作室
  • 阿里巴巴网站推广怎么做网站开发分为
  • 茶叶商城网站建设网站建设与管理课程实训
  • 在线心理健康网站建设无代码系统搭建平台
  • 网站怎么做微博认证网络推广是做什么工作的
  • 建网站收费多少钱网站页面设计工作流程
  • 品牌策划全案公司台州seo排名公司
  • 做网站用上面软件写代码比较好html5移动端网站开发教程
  • 网站建设招聘网响应式网站建设哪家公司好
  • 如何做网站内容上海关键词排名优化价格
  • 在相亲网站认识了一个做红酒生意的百度网页首页
  • 做淘宝客为什么要做网站产品设计优秀作品
  • 网站开发H5毕业设计网站论文
  • 网站建设中的安全问题典型营销型网站有哪些
  • 爱网站关键词挖掘小松建设的官方网站
  • 可以做视频剪辑兼职的网站标识设计公司
  • 建音乐网站东凤网站
  • 网站建设 软件服务什么什么设计英文网站
  • 阿里云服务器上传网站深圳电商公司排行榜
  • 嘉兴网站建设定制网站云南响应式网站建设