关于自由编程的这道题

关于自由编程的这道题

对于自由编程的这道题,如果你要开发一个拦截器去判断用户是否已登录,那么在最开始给后端发送请求的时候,都要先经过这个拦截器,这个时候是永远不可能获得session的,因为想要在UserController设置session必须先经过拦截器的校验,通过了才可以执行Controller层的代码,那么preHanle方法会一直返回false,不知道是我理解的问题还是这个题目的问题,请老师指正

相关截图:

https://img1.sycdn.imooc.com//climg/623189d209ed47c814250909.jpg

https://img1.sycdn.imooc.com//climg/623189e60981db4f13420488.jpg

https://img1.sycdn.imooc.com//climg/62318a04098abe3912161015.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2022-03-16 16:04:25

同学你好,访问登录页面是不需要拦截的,访问其他页面需要在拦截器中判断用户是否登录,如果已登录就放行,否则重新跳转到登录页面

祝学习愉快~

  • 那我根据老师你的回答问个问题,如果我在拦截器里的prehandle()方法中判断session中有没有数据,有的话我就返回true,那么如果没有的话我就重定向到登录页面,可是这个重定向怎么实现呢? 因为方法要返回boolean值,那我response.sendRedirect(index.html)之后还要不要加上return false这样的语句呢?我刚才就是这样做的,当我执行到重定向语句了,也就是页面跳转了,那么return false这条语句还会不会执行呢? 而且我服务器报了一个500的状态码,错误消息是:提交响应后无法转发。 主要问题就是怎么在prehandle方法里重定向到其他地址
    2022-03-27 17:57:43
  • 同学你好,1、是可以通过重定向实现跳转页面的,同学可以参考下方代码试一下。

    package com.imooc.restful.interceptor;
    
    import com.imooc.restful.entity.User;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.HandlerInterceptor;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    public class LoginInterceptor implements HandlerInterceptor {
        //1.创建日志对象,并加载当前类
        Logger logger= LoggerFactory.getLogger(LoginInterceptor.class);
        //拦截器, 对登录的用户拦截判断,已登录的放行,未登录的响应回去先登录
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println(request.getRequestURI());
            User user =(User) request.getSession().getAttribute("user");
            if(user!=null){
                //登录成功,将session中的账号信息存放到log日志中
                logger.info(user.getName()+":"+user.getPassword());
                System.out.println("成功");
                return  true;
            }else {
                response.sendRedirect("/login.jsp");
                return false;
            }
        }
    }

    2、同学重定向的路径是否在代码中也进行了重定向或请求转发,从而导致异常。如果是,建议同学直接跳转到前端页面中。

    祝学习愉快!

    2022-03-27 18:30:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师