`

Fleet Filter

 
阅读更多

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 环境配置json文件

    Fleet 环境配置json文件

    GitOps实践:借助 Fleet 管理海量集群.pdf

    GitOps实践:借助Fleet管理海量Kubernetes集群 随着物联网(IoT)和边缘计算的快速发展,企业面临着在大量分散的边缘设备上管理和部署应用程序的挑战。GitOps作为一种新兴的运营模式,它将版本控制系统(如Git)与...

    开源项目-kolide-fleet.zip

    Kolide Fleet是一款基于Go语言和go-kit构建的开源osquery服务器。osquery是一个强大的开源工具,它允许系统管理员和安全专业人员以SQL查询的方式获取操作系统级别的信息,包括进程、网络连接、文件系统活动等。Fleet...

    SymphoniePRO Fleet

    SymphoniePRO Fleet

    fleet combat2存档

    fleet combat2存档,IPAD游戏。。

    Pilot Fleet 3.0用户使用手册-1

    【Pilot Fleet 3.0用户使用手册-1】提供了关于Pilot Fleet自动路测系统的详尽信息,这个系统由珠海世纪鼎利通信科技发展有限公司研发,主要用于无线通信网络的自动路测、海量数据的远程监测和分析以及网络优化。...

    Rancher Fleet..docx

    Rancher Fleet 是一个轻量级的 GitOps 工具,用于管理单个或多个集群。它通过 Fleet Manager 从 Git 仓库获取 Kubernetes 资源,然后由 Fleet Controller 控制器在集群中部署这些资源。Fleet 还提供了多集群模式,...

    PyPI 官网下载 | aa-fleet-1.1.0.tar.gz

    《PyPI官网下载:aa-fleet-1.1.0.tar.gz详解》 在Python的开发过程中,我们经常需要利用各种第三方库来扩展其功能。PyPI(Python Package Index)是Python官方的软件仓库,提供了丰富的Python库供开发者下载和使用...

    SIEMENS西门子SIDRIVE IQ Fleet操作手册.pdf

    SIDRIVE IQ Fleet是西门子推出的一款针对电机驱动系统的智能管理解决方案,旨在提升工业设备的效率和可维护性。该操作手册详细介绍了如何使用和配置SIDRIVE IQ Fleet,适用于SIMOTICS CONNECT 400及相关的Android和...

    Rancher Fleet使用教程.html

    更新日期为:20201204 当前官网版本为v0.3.0,但在实践中发现此版本使用私有仓库无法正常工作,更新为v0.3.1可正常使用;有一些官方文档说的不清楚的地方,在这篇博客中进行了完善; 所有笔记均为本人大量实验验证后...

    Fleet 1.13.92

    【标题】"Fleet 1.13.92" 是 JetBrains 推出的一款创新的集成开发环境(IDE),版本号1.13.92代表着软件的迭代更新,通常包含性能优化、新功能添加以及可能的错误修复。JetBrains 作为知名软件开发工具提供商,其...

    Python库 | fleet_x-0.0.1-py2-none-any.whl

    python库,解压后可用。 资源全名:fleet_x-0.0.1-py2-none-any.whl

    Go-fleet-采用go和go-kit构建的osquery服务器

    fleet - 采用go和go-kit构建的osquery服务器。osquery是一个SQL驱动操作系统检测和分析工具。osquery支持像SQL语句一样查询系统的各项指标,可以用于OSX和Linux操作系统。它使得底层操作系统分析和监控性能更加直观...

    Android-Android-Fleet-Management-SDK.zip

    Android-Android-Fleet-Management-SDK.zip,面向android的estimote车队管理sdk,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    Fleet接口分析说明1

    Fleet接口分析说明 Fleet是一种分布式训练框架,提供了多种接口来实现分布式训练。以下是Fleet接口的分析说明: 1. Fleet类 Fleet类是分布式训练的基类,提供了基本的接口来实现分布式训练。Fleet类有多个参数,...

    Oracle 18c新特性:多租户舰队 CDB Fleet_ITPUB博客.mhtml

    Oracle 18c新特性:多租户舰队 CDB Fleet_ITPUB博客.mhtml

Global site tag (gtag.js) - Google Analytics