package com.gxx.manage.shiro; import java.io.IOException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter; /** *
*
Title:
*
* 基于URL的权限判断过滤器 我们自动根据URL产生所谓的权限字符串,这一项在Shiro示例中是写在配置文件里面的,默认认为权限不可动态配置 * URL举例:/User/create.do?***=*** -->权限字符串:/User/create.do
*
Description:
*
*

* none

*
* * @author Administrator * @version 1.0, 2015年9月20日 * @since manage * */ public class UrlPermissionsFilter extends PermissionsAuthorizationFilter { /** * 日志处理器 */ Logger logger = Logger.getLogger(UrlPermissionsFilter.class); /** * 指的是在声明url时指定的权限字符串,如/User/create.do=perms[User:create]. * 我们要动态产生这个权限字符串,所以这个配置对我们没用 */ 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 path = ((HttpServletRequest) request).getServletPath(); logger.info("请求地址对应的Url权限:" + path); return new String[]{path}; } }