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

/**
*DESC:
*权限校验过滤器
*/
publicclassPermissionFilterextendsAccessControlFilter{
@Override
protectedbooleanisAccessAllowed(ServletRequestrequest,
ServletResponseresponse,ObjectmappedValue)throwsException{
HttpServletRequesthttpRequest=((HttpServletRequest)request);
/**
*这里需要处理一下请求的URL路径,把它转成shiroaddStringPermission存储的URL格式,如:/user/email
*所以这里替换了一下,使用根目录开始的URI
*/
Stringuri=httpRequest.getRequestURI();//获取URI
System.out.println("当前请求的URL:"+uri);
StringbasePath=httpRequest.getContextPath();//获取basePath
if(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;
}
根本不能判断,
慕桂英3389331
浏览 646回答 2
2回答

凤凰求蛊

可以通过AntPathMatcher来判断URI是否匹配,只是需要将数据库中存储的URI改为为Ant风格的URI,如:/users/**
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript