为了账号安全,请及时绑定邮箱和手机立即绑定

有没有人遇到过这个问题哈!springboot+shiro 怎么拦截 restful 风格的URL,判断其是否有权限

有没有人遇到过这个问题哈!springboot+shiro 怎么拦截 restful 风格的URL,判断其是否有权限

catspeake 2019-09-19 12:03:52
/***DESC:*权限校验过滤器*/publicclassPermissionFilterextendsAccessControlFilter{@OverrideprotectedbooleanisAccessAllowed(ServletRequestrequest,ServletResponseresponse,ObjectmappedValue)throwsException{HttpServletRequesthttpRequest=((HttpServletRequest)request);/***这里需要处理一下请求的URL路径,把它转成shiroaddStringPermission存储的URL格式,如:/user/email*所以这里替换了一下,使用根目录开始的URI*/Stringuri=httpRequest.getRequestURI();//获取URISystem.out.println("当前请求的URL:"+uri);StringbasePath=httpRequest.getContextPath();//获取basePathif(null!=uri&&uri.startsWith(basePath)){uri=uri.replaceFirst(basePath,"");}if(subject.isPermitted(uri)){System.out.println("有权限");returnBoolean.TRUE;}上面的URL拦截并判断权限,如果是传统的URL的话可以很容易的判断是否有权限。但是如果时restful风格的url的话怎么拦截判断是否有权限呢?因为数据库权限表保存的URL是没有带参数的比如:/user但是restful风格API请求时会携带参数:/user/1所以使用:if(subject.isPermitted(uri)){System.out.println("有权限");returnBoolean.TRUE;}根本不能判断,
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

可以通过AntPathMatcher来判断URI是否匹配,只是需要将数据库中存储的URI改为为Ant风格的URI,如:/users/**
                            
查看完整回答
反对 回复 2019-09-19
  • 2 回答
  • 0 关注
  • 641 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信