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};
}
}