一個非常簡單的登錄權限攔截器
問題一:登錄頁面的提交請求肯定是要過濾掉的,目前采用在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>