晶. 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日

悬赏问题

  • ¥50 关于#华为#的问题:华为HMS账号登录
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?