package com.erichfund.cljjfof.server.util;

import java.io.IOException;

/**
* @author 作者 zhuzhengquan:
* @version 创建时间:2016年11月21日 下午6:49:26
* 类说明
*/
public class WebAuthFilter implements Filter {
private String errorPage;
private Configuration cfg = null; @Override
public void init(FilterConfig filterConfig) throws ServletException {
errorPage = filterConfig.getInitParameter("errorPage");
} @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse)response;
if(WebUserSession.getUserSession()== null ){
if(req.getRequestURI().startsWith("/ajax1....") ||
req.getRequestURI().startsWith("/ajax2...")){ // 弹框登录
}else{ // URL跳转
String method = req.getMethod();
String returnUrl ;
if(method.equals("GET")){
returnUrl = "/webfof_login/login?service=" + URLEncoder.encode("get " + req.getRequestURI() + (StringUtils.hasText(req.getQueryString())?"?"+req.getQueryString():""),"utf-8");
}else if(method.equals("POST")){
String host="";
String path = req.getRequestURI() + (StringUtils.hasText(req.getQueryString())?"?"+req.getQueryString():"");
MultivaluedMap<String,String> formParams = FormUrlEncodedProvider.parseForm(req.getInputStream());
Map<String,Object> data = new HashMap<String,Object>();
data.put("host", host);
data.put("path", path);
data.put("formParams", formParams);
String url = JsonUtil.serializeToJson(data);
returnUrl = "/webfof_login/login?service=" + URLEncoder.encode("post " + url,"utf-8");
}else{
throw new RuntimeException("not support "+method);
}
res.sendRedirect(returnUrl);//LCK login.jsp
}
return;
}else{
String uri = ((HttpServletRequest)request).getRequestURI();
IAuthService authService = EnviromentUtil.getWebApplicationContext().getBean(IAuthService.class);
boolean hasOperatePrivilege = authService.hasOperatePrivilege(UserSession.getUserSession().getOpid(), uri);
if(!hasOperatePrivilege){
cfg = new Configuration();
cfg.setServletContextForTemplateLoading(request.getServletContext(), null); // 创建数据模型
Map<String,String> dataMap = new HashMap<String,String>();
dataMap.put("msg", "您无权访问此链接");
Template template = cfg.getTemplate(errorPage);
PrintWriter out = res.getWriter();
try {
template.process(dataMap, out);
} catch (TemplateException e) {
e.printStackTrace();
}
out.flush();
// request.setAttribute("msg", "您无权访问此链接");//存储业务异常信息类
// request.getRequestDispatcher(errorPage).forward(request, response);//跳转到信息提示页面!!
return;
} }
chain.doFilter(request, response);
} @Override
public void destroy() {
// TODO Auto-generated method stub } }

Filter里面实现未登录跳转,已登录权限判断的更多相关文章

  1. vue 判断是否登录,未登录跳转到登录页

    网页一进入判断是否登录,未登录跳转到登录页面 router.js export default new Router({ routes: [ { path: '/', name: 'HelloWorl ...

  2. SSM登录跳转到登录页,登录页不能加载js和样式

    SSM登录跳转到登录页,登录页不能加载js和样式选用jsppage添加根路径. <% String rootPath = request.getContextPath(); %> < ...

  3. vue实现未登录跳转到登录页面

    环境:vue 2.9.3; webpack;vue-router 目的:实现未登录跳转 例子:直接在url地址栏输入...../home,但是这个页面要求需要登陆之后才能进入,判断的值就通过登陆之后给 ...

  4. mvc未登录跳转到登录界面

    编写一个mvc控制器基类BaseController , 其继承自controller 重写其OnActionExecuting方法, 在其中检测session值,如果没有,则跳转至登录页面. 如下

  5. Vue-router路由判断页面未登录跳转到登录页面

    router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requireAuth) ...

  6. Vue-router路由判断页面是否登录,未登录跳转到登录页面

    在index.js中 //定义路由 const router = new Router({ routes, strict: process.env.NODE_ENV !== 'production', ...

  7. javaweb关于用户是否登录全局判断,没有登录跳转到登录界面

    有这样一个需求,用户密码登录网站,在session中保留了用户的信息,但是用户很长时间没有再操作该界面,用户的session则被浏览器清除,而一些业务逻辑则是需要用到用户的信息,那么用户再执行操作后, ...

  8. Django(十三)状态保持 —— cookie与session+ajax异步请求+session记住登录状态+cookie记住登录名密码

    一.状态保持的概述 http协议是无状态的.下一次去访问一个页面时并不知道上一次对这个页面做了什么.因此引入了cookie.session两种方式来配合解决此问题. Duplicate entry:重 ...

  9. SpringSecurity兑现多登录成功页面和登录成功返回被拦截界面

    SpringSecurity实现多登录成功页面和登录成功返回被拦截界面 使用SrpingSceurity作为认证和授权的安全框架可以省下很多基础工作. 具体可以参考SpringSecurity,这里不 ...

  10. Filter实现session超时自动跳转到login页,超过试用期不许登录

    新建一个过滤器 package com.autumn.filter; import com.autumn.pojo.Users; import javax.servlet.*; import java ...

随机推荐

  1. 小试牛刀,建立jsp网页与导出war包

    一.建立jsp网页 首先创建一个动态项目(我们学习的是动态网) 二.检查编码utf-8有没错误. 如有错误就是没有设置eclipse,请按照eclipse设置 编写一段代码,进行了解 三.导出一个wa ...

  2. 在Linux下安装redis

    http://www.cnblogs.com/xiaohongxin/p/6854095.html 追加: 通过配置文件启动最好先./redis.cli shutdown ,再到当前目录在./redi ...

  3. NOIP模拟赛 数列

    Problem 2 数列(seq.cpp/c/pas) [题目描述] a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1]  (x>3) 求a数列的第n项对1000000007 ...

  4. 【dp】守望者的逃离

    妙 题目描述 恶魔猎手尤迪安野心勃勃,他背着了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快 ...

  5. 01将图片嵌入到Markdown文档中

    将图片内嵌入Markdown文档中 将图片嵌入Markdown文档中一直是一个比较麻烦的事情.通常的做法是将图片存入本地某个路径或者网络存储空间,使用URL链接的形式插入图片: ![image][ur ...

  6. destoon 后台入口文件weigouadmin.php解析

    destoon有几个文件不能修改,一修改后台就无法登陆,weigouadmin.php就是其中之一,据官网客服说这个文件是可以修改的,不知为什么即使不修改打开一下保存后后台就不能登陆了.因刚接触dt, ...

  7. 【TCP/IP】【网络基础】网页访问流程

    引用自 <鸟哥的linux私房菜> http://cn.linux.vbird.org/linux_server/0110network_basic_1.php#ps7 那 TCP/IP ...

  8. CSS清除浮动8大方法

    CSS清除浮动是每一位web前端工程师都要掌握的技术,也是让每一位刚入门的前端工程师感到头疼的问题, 下面就来讲一下CSS清除浮动的原理和各种解决方法,大家可以根据实际情况选择最佳的解决方案. 在用D ...

  9. LeetCode(152) Maximum Product Subarray

    题目 Find the contiguous subarray within an array (containing at least one number) which has the large ...

  10. centos7 安全配置

    CentOS是最多人用来运行服务器的 Linux 版本,最新版本是 CentOS 7.当你兴趣勃勃地在一台主机或 VPS 上安装 CentOS 7 后,首要的工作肯定是加强它的安全性,以下列出的七件事 ...