美文网首页
spring 拦截器的实现

spring 拦截器的实现

作者: 法式大面包 | 来源:发表于2017-04-25 20:27 被阅读0次
package com.qfedu.dang.interceptor;

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

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * spring 拦截器
 * @author czy
 *
 */
public class PriviledgeInterceptor implements HandlerInterceptor {

/**
 * 请求发到控制器之前需要做的事情
 * 如对用户进行权限验证,验证通过返回true,否则返回false
 * 返回false后,其它两个方法将不会执行
 */
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
    // 拿到请求的URL
    String url = request.getServletPath();
    //先通过业务方法访问持久层获得所有需要权限验证的URL
    //hibernate:select distinct o.url 
    // from Operation as o where o.url not null;
    //list<String> ---> 装有所有需要权限的URL
    //对url进行处理,检查url是否需要验证
    //如果不需要直接return true
    //如果需要权限验证,先检查用户是否登录
    //如果用户没有登录,就直接跳转登录页
    //如果用户已经登录就从HttpSession中获取登录的用户
    //通过用户对象获得用户所有的角色,再通过角色获得所有的权限
    //然后检查刚才的URL在不在用户的权限对应的URL之中
    //如果再就返回true表示放行,否则跳转到固定页面提示没有足够的权限
    return false;
}

//请求执行完,视图未渲染之前执行
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView model)
        throws Exception {
    // TODO Auto-generated method stub

}

//视图解析器在视图渲染完成后执行的事情,主要处理善后的事情,例如释放资源的代码或处理异常
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex)
        throws Exception {
    
  }
}

相关文章

网友评论

      本文标题: spring 拦截器的实现

      本文链接:https://www.haomeiwen.com/subject/rnhbzttx.html