SpringMVC下的一个简单的权限拦截效验
来源:互联网 发布:淘宝上足球鞋正品店铺 编辑:程序博客网 时间:2024/06/05 20:57
实现后具体效果:如果用户没有登录,跳转到登录页面
在web.xml中定义SpringMVC前端控制器配置拦截所有请求
<!-- 定义Spring MVC的前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> </servlet> <!-- 让Spring MVC的前端控制器拦截所有请求 --> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
在Springmvc-config配置拦截器
<!-- 定义Spring MVC的拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 拦截所有请求 --> <mvc:mapping path="/*"/> <!-- 自定义判断用户权限的拦截类 --> <bean class="csh.hrm.interceptor.AuthorizedInterceptor"/> </mvc:interceptor> </mvc:interceptors>
拦截请求后到csh.hrm.interceptor.AuthorizedInterceptor类下去做相应的判断
AuthorizedInterceptor类:
/** * 判断用户权限的Spring MVC的拦截器 */public class AuthorizedInterceptor implements HandlerInterceptor { /** 定义不需要拦截的请求 */ private static final String[] IGNORE_URI = {"/loginForm", "/login","/404.html"}; /** * 该方法需要preHandle方法的返回值为true时才会执行。 * 该方法将在整个请求完成之后执行,主要作用是用于清理资源。 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception exception) throws Exception { } /** * 这个方法在preHandle方法返回值为true的时候才会执行。 * 执行时间是在处理器进行处理之 后,也就是在Controller的方法调用之后执行。 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mv) throws Exception { } /** * preHandle方法是进行处理器拦截用的,该方法将在Controller处理之前进行调用, * 当preHandle的返回值为false的时候整个请求就结束了。 * 如果preHandle的返回值为true,则会继续执行postHandle和afterCompletion。 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { /** 默认用户没有登录 */ boolean flag = false; /** 获得请求的ServletPath */ String servletPath = request.getServletPath(); /** 判断请求是否需要拦截 */ for (String s : IGNORE_URI) { if (servletPath.contains(s)) { flag = true; break; } } /** 拦截请求 */ if (!flag){ /** 1.获取session中的用户 */ User user = (User) request.getSession().getAttribute(HrmConstants.USER_SESSION); /** 2.判断用户是否已经登录 */ if(user == null){ /** 如果用户没有登录,跳转到登录页面 */ request.setAttribute("message", "请先登录再访问网站!"); request.getRequestDispatcher(HrmConstants.LOGIN).forward(request, response); return flag; }else{ flag = true; } } return flag; }}
userController:
@RequestMapping(value="/login") public ModelAndView login(String loginname,String password,HttpSession session,ModelAndView mv){ User user=userService.login(loginname, password); if(user!=null){ // 将用户保存到HttpSession当中 session.setAttribute(HrmConstants.USER_SESSION, user); // 客户端跳转到main页面 mv.setViewName("redirect:/main"); }else { mv.addObject("message", "登录名或密码错误!请重新输入"); mv.setViewName("forward:/loginForm"); } return mv; }
如果用户登录就将信息存入Session中,这样在拦截判断的时候如果能取到对应的session值,就是有登录,返回true,否则跳转到登录页面
阅读全文
1 0
- SpringMVC下的一个简单的权限拦截效验
- 基于Springmvc的登录权限拦截器
- SpringMVC、MyBatis实现的一个简单权限管理系统
- 简单的springmvc登录验证拦截器
- 简单的springMVC登录拦截器
- 一个比较好用的JS效验
- 简单的struts2权限拦截器应用
- 一个简单的SpringMVC工程
- 一个简单的springMVC+Maven
- 一个简单的SpringMVC程序
- 一个简单的SpringMVC实例
- 一个简单的SpringMVC Demo
- springmvc的拦截器
- springMVC的拦截器
- springmvc的拦截器
- SpringMVC的拦截器
- springmvc的拦截器
- SpringMVC的拦截器
- Java POI导入Excel
- Tomcat配置数据库连接池
- 【hpu oj 1008 QAQ的矩阵价值 思维】
- OWASP top10
- centos 6.5下,安装git2.2.1
- SpringMVC下的一个简单的权限拦截效验
- Mac直播服务器Nginx配置对HLS的支持
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 第一节.基础知识 (从入门到入狱教程)
- NKOJ P3811 lucknum
- 配置Activiti Explorer
- KMP算法中关于next数组的探究
- 安卓蓝牙连接操作步骤。。。慢慢来不急
- 新手上路之Maven下载安装