晶. 2022-05-22 08:15 采纳率: 92.1%
浏览 146
已结题

加入拦截器之后一直是登陆页面,无法登录到主页

输入账号密码点登录还是这个页面,没变化,网址变成http://localhost:8080/login
注释掉拦截器网页都可以用,也可以登录加上拦截器就登陆不了了

img


```java
package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import pojo.User;

import javax.servlet.http.HttpSession;

@Controller
public class UserController {
    @RequestMapping("/main1")
    public String main(){

        return "main";
    }

    @RequestMapping("/toLogin")
    public String toLogin(){

        return "login";
    }

    @RequestMapping("/toOrderInfo")
    public String toOrderInfo(){

        return "orderinfo";
    }

    //登录
    @RequestMapping("/login")
    public String login(User user, Model model,HttpSession session){

        //判断用户名和密码
        String username = user.getUsername();
        String password = user.getPassword();
        if (username!=null&&"李硕".equals(username)&&password!=null&&"123456".equals(password)){
            //登录成功
            session.setAttribute("user",user);

            return "redirect:main";
        }else{
            //登陆失败
            model.addAttribute("msg","用户名或者密码错误");
            return "login";
        }
    }


    //退出成功,需要跳转到登陆页面
    @RequestMapping("/logout")
    public String logOut(HttpSession session){

        session.invalidate();

        return "login";
    }
}


package interceptor;

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

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

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //针对登录和跳转到登录页面的进行放行
        String requestURI=request.getRequestURI();
        if (requestURI.indexOf("/login")>0||
        requestURI.indexOf("/toLogin")>0){
            //直接放行
            return true;
        }
        //其他请求需要做登陆权限拦截判断
        HttpSession session = request.getSession();
        Object user = session.getAttribute("user");
        if (user!=null){
            //登录成功,放行
            return true;
        }
        //没有登录,跳转到登录页面
        request.setAttribute("msg","您还没有登录,请先登录");
        //此处视图解析器不生效,原生Javweb技术;
        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp")
                .forward(request,response);

        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}


```

img

img

  • 写回答

2条回答 默认 最新

  • 皮蛋不吃粥 2022-05-22 08:44
    关注

    打开拦截器 走接口断点看下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题