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

在线等!springboot+shiro 怎么拦截 restful 风格的URL,判断其是否有权限求大佬指点!

在线等!springboot+shiro 怎么拦截 restful 风格的URL,判断其是否有权限求大佬指点!

尚方宝剑之说 2019-10-08 11:38:40
/***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 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

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

添加回答

举报

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