`
郑云飞
  • 浏览: 797824 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springMVC权限过滤器以及登录过滤器

 
阅读更多
package com.zero2ipo.plugins.servlet;

import java.io.PrintWriter;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Repository;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.zero2ipo.plugins.menu.biz.IsysMenu;
import com.zero2ipo.plugins.menu.bo.SysMenu;
import com.zero2ipo.plugins.user.bo.User;

/**
 * @title springMVC权限过滤器以及登录过滤器
 * @author ZhengYunFei
 * @date 2014-9-29
 */
@Repository
public class SystemInterceptor implements HandlerInterceptor {
	//自动注入菜单项接口
	@Resource(name = "sysMenu")
	private IsysMenu sysMenu;
	@Override
	public boolean preHandle(HttpServletRequest request,
			HttpServletResponse response, Object handler) throws Exception {
		  HttpServletRequest req = (HttpServletRequest) request;
	      HttpServletResponse res = (HttpServletResponse) response;
	        String uri =  req.getRequestURI();
	        req.setAttribute("path", req.getContextPath());
	        //过滤器器中维护的特定url页面不进行拦截
	        if(!uri.matches("/c/login/userLogin")&&!uri.matches("/c/login/userLogout")){
	            //如果没有登陆,或者请求session超时都返回重新登陆 
	            User so = (User) req.getSession().getAttribute("user");
	            if(so == null || so.equals("")){
	                PrintWriter out = res.getWriter() ;
	                out.print("<html>") ;
	                out.print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />") ;
	                out.print("<script> ") ;   
	                out.print("window.top.location='/index.html?errorType=7';") ; 
	                out.print("</script>") ; 
	                out.print("</html>") ;
	                return false;
	            }else{
	            	//已经登录的用户,防止其越权,访问其没有权限的url
	            	//根据此登录用户的ID查询该用户所拥有的url权限
	            	String userId=so.getUserId();
	            	List<SysMenu> list=sysMenu.findMenuListByUserId(userId);
	            	System.out.println("访问的url="+uri);
	            	for(int i=0;i<list.size();i++){
	            		System.out.println("该用户拥有的url权限为:"+list.get(i).getPathCode());
	            	}
	            	//判断uri是否存在list中,如果存在
	            	if(list.contains(uri)){
	            		return true;
	            	}else{
	            		PrintWriter out = res.getWriter() ;
	            		//非法操作,该用户试图访问无权限的uri
	 	                out.print("<html>") ;
	 	                out.print("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />") ;
	 	                out.print("<script> ") ;   
	 	                out.print("window.top.location='/index.html?errorType=9';") ; 
	 	                out.print("</script>") ; 
	 	                out.print("</html>") ;
	            		return false;
	            	}
	            }
	         }
			return true;
	}

	@Override
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView arg3) throws Exception {
		
	}

}
 

 spring-servlet.xml中配置

<!-- 权限过滤配置 -->
<mvc:annotation-driven/>
<mvc:interceptors>
   <mvc:interceptor>
       <mvc:mapping path="/**" />
       <bean class="com.zero2ipo.plugins.servlet.SystemInterceptor"/>
   </mvc:interceptor>
</mvc:interceptors>

 

分享到:
评论

相关推荐

    spring+springmvc+mybatis项目案例实现用户角色权限管理

    使用spring+springmvc框架 整合了Mybatis持久层框架 整合Druid用于数据库连接,并使用Druid对业务层监控spring jdbc ...使用了loginFilter对访问进行登录过滤 使用了CheckCodeServlet生成验证码图片

    Spring MVC过滤器-登录过滤的代码实现

    本篇文章主要介绍了Spring MVC过滤器-登录过滤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。

    SpringMVC讲义大全.docx

    SpringMVC框架概述: 介绍什么是...拦截器和过滤器: 介绍如何使用拦截器和过滤器来实现日志记录、权限验证等功能。 RESTful Web服务: 讲解如何使用SpringMVC开发RESTful风格的Web服务,支持HTTP方法、资源定位等。

    过滤器与拦截器的区别

    拦截器功在对请求权限鉴定方面确实很有用处,在我所参与的这个项目之中,第三方的远程调用每个请求都需要参与鉴定,所以这样做非常方便,而且他是很独立的逻辑,这样做让业务逻辑代码很干净。和框架的其他功能一样,...

    使用Spring+SpringSecurity+SpringMVC的web框架小demo

    这个是基于Spring的一个小例子 , 主要是为了帮助大家学习SpringSecurity和SpringMvc, 1.不用再数据库建表, ...3.判断如果是用户名是admin 密码123,就...还有可以使用自定义的过滤器来实现登录, 有不懂的问题 可以加我

    spring3.0+mybatis3.0+springSecurity+SpringMVC

    还有可以使用SpringMVC进行前后台的交互 还有可以使用自定义的过滤器来实现登录, 有不懂的问题 可以加我 5.可以通过表单的方式使用mybatis添加数据库记录 6.使用mvc进行数据渲染 具体演示:...

    sh4springmvc3层架构html5+jsp多视图

    这个demo实现了简单地用户管理,权限管理,角色管理,底层使用ssh4的dao,service...利用过滤器实现session超时管理,权限管理需要自己补全。echache实现了二级缓存,打印sql可以看到部分配置后不会重复查询数据库。

    springboot权限控制系统

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    java后台权限管理系统源码(spring boot+mvc+mybatis).zip

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    springboot+权限管理系统 shiro + ssm实现 实现菜单,自用

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    毕业设计:医院在线预约挂号管理系统

    该系统使用JavaEE景点三层架构来...权限模块需要使用RBAC权限模式设计数据表,必要时要用SpringMVC框架的Filter过滤器来过滤权限,为了保证菜单的加载速度,将菜单写入Session. 内含项目完整代码,数据库及配套报告。

    Java 权限管理系统 shiro + ssm实现

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    spring+shiro+ehcache例子

    登录名为2:可以进行权限的验证,以及shiro的缓存。 登录名为任意用户:可以验证mycache的缓存。 缓存的验证都是观察控制台的输出信息 此项目有shiro验证码的实现,更改用户userState状态可以实现用户锁定,密码...

    权限管理系统 shiro + ssm实现

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    整合springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap实现权限管理文件上传下载多数据源切换等功能

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    spring boot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap实现后台权限管理系统源码

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    微服务的登录校验(gateway过滤器or拦截器实现)

    假如我们没一个方法都分别对其权限鉴定,用户判断是否登录,那么一个团队的开发每一个成员涉及到需要鉴权或者判断用户是否登录的情况,都需要写一套相同的代码,或者调用相同的接口,可是这些实际上应该是与本次逻辑...

    Forum-Community:使用Spring+SpringMVC+Hibernate开发一个论坛社区

    ThisIsUs Community ...并提供了一个字符转换编码过滤器防止中文乱码.服务层使用Spring4.0,持久层使用Hibernate.使用Maven构建项目. 系统架构 社区总共为4个模块,为用户管理,社区管理,版块管理以及社区基

    springboot+mybatis+druid+jsp+bootstrap实现后台权限管理系统源码.zip

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    shiroFilter权限验证

    web.xml配置 因为我们是与spring进行集成的,而spring的基本就是web项目的xml文件。...首先我们在web.xml配置的过滤器实际上是配置ShiroFilterFactoryBean,所以在这里需要将ShiroFilterFactoryBean定义为shiroFilter ...

Global site tag (gtag.js) - Google Analytics