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 {
}
}
网友评论