*/
public class URLPermissionsFilter extends PermissionsAuthorizationFilter {
/**
* @param mappedValue
* 指的是在声明url时指定的权限字符串,
* 我们要动态产生这个权限字符串,所以这个配置对我们没用
* 这里吧拦截的权限字符串交给realm 去验证。
*/
public boolean isAccessAllowed(ServletRequest request,
ServletResponse response, Object mappedValue) throws IOException {
return super.isAccessAllowed(request, response,
buildPermissions(request));
}
/**
* 根据请求URL产生权限字符串,这里只产生,而比对的事交给Realm
*
* @param request
* @return
*/
protected String[] buildPermissions(ServletRequest request) {
String[] perms = new String[1];
HttpServletRequest req = (HttpServletRequest) request;
String path = req.getServletPath();
System.out.println("req url="+path);
//perms[0] =path;// path;// path直接作为权限字符串
perms[0] ="role/list";// path;
System.out.println("访问路径:"+path);
return perms;
}
}
使用shiro的时候 ,自定义了URLPermissionsFilter,想动态通过访问url来鉴权,当前登录人拥有的权限列表起根源是根据@At的值来生成的,这样权限字符串就可以有参数通配符,例如aaa/del/?,而用户请求的时候url已经变成具体的参数,匹配不成功,能否在URLPermissionsFilter 中通过renquest对象获取到当前处理module以及方法,从而解析出At设置 从而匹配?
请问Wendal老师,有办法不?