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文件
GitOps实践:借助Fleet管理海量Kubernetes集群 随着物联网(IoT)和边缘计算的快速发展,企业面临着在大量分散的边缘设备上管理和部署应用程序的挑战。GitOps作为一种新兴的运营模式,它将版本控制系统(如Git)与...
Kolide Fleet是一款基于Go语言和go-kit构建的开源osquery服务器。osquery是一个强大的开源工具,它允许系统管理员和安全专业人员以SQL查询的方式获取操作系统级别的信息,包括进程、网络连接、文件系统活动等。Fleet...
SymphoniePRO Fleet
fleet combat2存档,IPAD游戏。。
【Pilot Fleet 3.0用户使用手册-1】提供了关于Pilot Fleet自动路测系统的详尽信息,这个系统由珠海世纪鼎利通信科技发展有限公司研发,主要用于无线通信网络的自动路测、海量数据的远程监测和分析以及网络优化。...
Rancher Fleet 是一个轻量级的 GitOps 工具,用于管理单个或多个集群。它通过 Fleet Manager 从 Git 仓库获取 Kubernetes 资源,然后由 Fleet Controller 控制器在集群中部署这些资源。Fleet 还提供了多集群模式,...
《PyPI官网下载:aa-fleet-1.1.0.tar.gz详解》 在Python的开发过程中,我们经常需要利用各种第三方库来扩展其功能。PyPI(Python Package Index)是Python官方的软件仓库,提供了丰富的Python库供开发者下载和使用...
SIDRIVE IQ Fleet是西门子推出的一款针对电机驱动系统的智能管理解决方案,旨在提升工业设备的效率和可维护性。该操作手册详细介绍了如何使用和配置SIDRIVE IQ Fleet,适用于SIMOTICS CONNECT 400及相关的Android和...
更新日期为:20201204 当前官网版本为v0.3.0,但在实践中发现此版本使用私有仓库无法正常工作,更新为v0.3.1可正常使用;有一些官方文档说的不清楚的地方,在这篇博客中进行了完善; 所有笔记均为本人大量实验验证后...
【标题】"Fleet 1.13.92" 是 JetBrains 推出的一款创新的集成开发环境(IDE),版本号1.13.92代表着软件的迭代更新,通常包含性能优化、新功能添加以及可能的错误修复。JetBrains 作为知名软件开发工具提供商,其...
python库,解压后可用。 资源全名:fleet_x-0.0.1-py2-none-any.whl
fleet - 采用go和go-kit构建的osquery服务器。osquery是一个SQL驱动操作系统检测和分析工具。osquery支持像SQL语句一样查询系统的各项指标,可以用于OSX和Linux操作系统。它使得底层操作系统分析和监控性能更加直观...
Android-Android-Fleet-Management-SDK.zip,面向android的estimote车队管理sdk,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
Fleet接口分析说明 Fleet是一种分布式训练框架,提供了多种接口来实现分布式训练。以下是Fleet接口的分析说明: 1. Fleet类 Fleet类是分布式训练的基类,提供了基本的接口来实现分布式训练。Fleet类有多个参数,...
Oracle 18c新特性:多租户舰队 CDB Fleet_ITPUB博客.mhtml