springmvc中配置攔截器


 

--------------------------------------------

登陸controller方法

@Controller
public class LoginController {

    // 登陸
    @RequestMapping("/login")
    public String login(HttpSession session, String username, String password)
            throws Exception {

        // 調用service進行用戶身份驗證
        // ...

        // 在session中保存用戶身份信息
        session.setAttribute("username", username);
        // 重定向到商品列表頁面
        return "redirect:/items/queryItems.action";
    }

    // 退出
    @RequestMapping("/logout")
    public String logout(HttpSession session) throws Exception {

        // 清除session
        session.invalidate();

        // 重定向到商品列表頁面
        return "redirect:/items/queryItems.action";
    }

}

 登陸認證攔截實現

public class LoginInterceptor implements HandlerInterceptor {

    
    //進入 Handler方法之前執行
    //用於身份認證、身份授權
    //比如身份認證,如果認證通過表示當前用戶沒有登陸,需要此方法攔截不再向下執行
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {
        
        //獲取請求的url
        String url = request.getRequestURI();
        //判斷url是否是公開 地址(實際使用時將公開 地址配置配置文件中)
        //這里公開地址是登陸提交的地址
        if(url.indexOf("login.action")>=0){
            //如果進行登陸提交,放行
            return true;
        }
        
        //判斷session
        HttpSession session  = request.getSession();
        //從session中取出用戶身份信息
        String username = (String) session.getAttribute("username");
        
        if(username != null){
            //身份存在,放行
            return true;
        }
        
        //執行這里表示用戶身份需要認證,跳轉登陸頁面
        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
        
        //return false表示攔截,不向下執行
        //return true表示放行
        return false;
    }

 

 頁面請求效果:

請求商品列表頁面(沒有加入攔截器之前  是可以直接請求到的)

http://localhost:8888/FirstSSM/item/queryItems.action

請求被攔截  因為沒有登錄  所以跳轉到登錄頁面   讓用戶登錄

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM