一个非常简单的登录权限拦截器
问题一:登录页面的提交请求肯定是要过滤掉的,目前采用在xml里配置<mvc:mapping path="/supplier/*"/>来过滤,可不可以配置不拦截某种请求。如果是按目前这种配置需要拦截请求,当请求太多的时候那就太麻烦了。
问题二:我简单地在拦截器里判断session是否有值,如果有表示登录,如果没有则跳转登录页面。按我下面的做法是不行的,有没有正确而有效的方法。
问题三:如果大家能够给出在拦截器内跳转页面的方案,可我的login.jsp是放在WEB-INF下面的,通过ModelAndView跳转时,视图解析器会跳转到/WEB-INF/login.jsp下,那肯定是找不到页面的。但如果我放到此文件夹下,那浏览器又不能访问login.jsp页面了。下载地址
1.public class UserInterceptor implements HandlerInterceptor{ 2. 3. @Override 4. public void afterCompletion(HttpServletRequest request, 5. HttpServletResponse response, Object obj, Exception err) 6. throws Exception { 7. } 8. 9. @Override 10. public void postHandle(HttpServletRequest request, HttpServletResponse response, 11. Object obj, ModelAndView mav) throws Exception { 12. response.sendRedirect("/login.jsp"); 13. } 14. 15. @Override 16. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 17. Object obj) throws Exception { 18. String str = (String) request.getSession().getAttribute("isLogin"); 19. System.out.println("str=========>"+str); 20. if(str!=null){ 21. return true; 22. } 23. return false; 24. } 25.}
1.<!-- 自定义拦截链配置 --> 2. <mvc:interceptors> 3. <mvc:interceptor> 4. <mvc:mapping path="/supplier/*"/> 5. <mvc:mapping path="/goods/*"/> 6. <mvc:mapping path="/contact/*"/> 7. <bean class="com.xiaoxing.shangjia.user.controller.UserInterceptor"></bean> 8. </mvc:interceptor> 9. </mvc:interceptors>