public class LoginFilter implements Filter {
private static final Logger log = LoggerFactory.getLogger(LoginFilter.class);
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterchain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String uri = req.getRequestURI();
String path = req.getContextPath();
String contextPath = null;
log.info(uri);
if(StringUtils.isNotBlank(path) && path.indexOf(SysConfig.CONTEXT_PATH) != -1){
contextPath = path;
}
//如果不是静态文件
if(!judgeDefault(uri, req)){
SysUserBo userSession = Utile.getUserFromSession(req);
if(userSession != null){
//如果不是公用页面
if(!judgePublic(uri,req)){
//如果不是授权页面
if(!judgeLimit(uri, req)){
resp.sendRedirect(contextPath + SysConfig.LIMIT_OUT);
return;
}
}
}else{
resp.sendRedirect(contextPath + SysConfig.LONGIN_PAGE);
return;
}
}
filterchain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
private String getServletContext(String url , HttpServletRequest request){
String path = request.getContextPath();
if(StringUtils.isNotBlank(path) && path.indexOf(SysConfig.CONTEXT_PATH) != -1){
url = url.replace(path, "");
}
return url;
}
/**
* 判断是否是静态链接,登录,欢迎等默认页面
* judgeDefault:(这里用一句话描述这个方法的作用)
* (这里描述这个方法适用条件 – 可选)
* 创建人:jenny
* 修改人:jenny
* @param url
* @param request
* @return
*boolean
* @exception
* @since 1.0.0
*/
private boolean judgeDefault(String url , HttpServletRequest request) {
if(url.equals("/")){
return true;
}
if(url.equals(SysConfig.CONTEXT_PATH)){
return true;
}
if(url.indexOf(SysConfig.STATIC_FLODER_NAME) != -1){
return true;
}
url = getServletContext(url, request);
for (String action : SysConfig.OUT_ACTION) {
if (url.equals(action)) {
return true;
}
}
return false;
}
/**
* 针对登录用户,判断是否是共用页面
* judgePublic:(这里用一句话描述这个方法的作用)
* (这里描述这个方法适用条件 – 可选)
* 创建人:jenny
* 修改人:jenny
* @param url
* @param request
* @return
*boolean
* @exception
* @since 1.0.0
*/
private boolean judgePublic(String url, HttpServletRequest request) {
url = getServletContext(url, request);
for (String pUrl : SysConfig.PUBLIC_LIMIT) {
if (pUrl.equals(url))
return true;
}
return false;
}
/**
* 针对登录用户,判断是否有权限访问
*
* @param url
* @param request
* @return
*/
public boolean judgeLimit(String url, HttpServletRequest request) {
url = getServletContext(url, request);
@SuppressWarnings("unchecked")
List<MenuEntityPojo> limitList = (List<MenuEntityPojo>) request
.getSession().getAttribute(SysConfig.SESSION_LIMIT_URL_KEY);
if (limitList != null)
for (MenuEntityPojo fn : limitList) {
/*if (null == fn.getMatch()) {
continue;
}*/
if (url.equals(fn.getMatch())) {
return true;
}
// 正则验证
if (Pattern.compile(fn.getMatch()).matcher(url).matches()) {
return true;
}
}
return false;
}
}
相关推荐
fleet combat2存档,IPAD游戏。。
GitOps实践:借助Fleet管理海量集群
Pilot Fleet 3.0用户使用手册-1 Fleet系统简介 1.1 概述 本说明书主要介绍Pilot Fleet自动路测系统的概况及优点、拓扑结构图及常见的组网方案、系统组成及工作原理、性能一览表等方面的内容。 本说明书适合所有进行...
开源项目-kolide-fleet.zip,fleet - osquery server built with go and go-kit
Fleet 环境配置json文件
SIEMENS西门子SIDRIVE IQ Fleet操作手册.pdf
资源来自pypi官网。 资源全名:aa-fleet-1.1.0.tar.gz
更新日期为:20201204 当前官网版本为v0.3.0,但在实践中发现此版本使用私有仓库无法正常工作,更新为v0.3.1可正常使用;有一些官方文档说的不清楚的地方,在这篇博客中进行了完善; 所有笔记均为本人大量实验验证后...
python库,解压后可用。 资源全名:fleet_x-0.0.1-py2-none-any.whl
fleet - 采用go和go-kit构建的osquery服务器。osquery是一个SQL驱动操作系统检测和分析工具。osquery支持像SQL语句一样查询系统的各项指标,可以用于OSX和Linux操作系统。它使得底层操作系统分析和监控性能更加直观...
SymphoniePRO Fleet
Android-Android-Fleet-Management-SDK.zip,面向android的estimote车队管理sdk,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
Oracle 18c新特性:多租户舰队 CDB Fleet_ITPUB博客.mhtml
文档例子 extern crate fleet;use fleet :: Client;let client = Client :: new ( "http://localhost:2999" );match client. list_units () { Ok (unit_page) => { for unit in unit_page.units { println! ( "{}" ,...
Fleet接口分析说明1
是下一代从无服务器技术的能够运行Node.js的功能远远快于其它功能消除了冷启动到...此monorepo包含用于使用Fleet API的工具。配套 :Fleet CLI是为有兴趣使用人们设计的工具。 :用于Node.js的SDK,用于查询Fleet API