项目-7-登录功能的完善

登录功能的完善

在上次文章中,我们已经初步实现了登录的功能,但是还有一部分小细节需要完善。

首先是显示登陆信息部分:

  1. 用户登录后,显示用户的头像,名称,消息数量…
  2. 用户未登录,显示注册、登录等信息

同时我们注意到,有许多的地方都需要设置上述要求。如果我们在每个controller都添加方法进行处理,过于繁琐。因此,我们可以通过拦截器指定拦截、排除的路径实现上述功能,实现大量请求的批处理能力。

拦截器
  • 1.定义拦截器,实现HandlerInterceptor
package com.guo.controller.interceptor;

import com.guo.entity.LoginTicket;
import com.guo.entity.User;
import com.guo.service.UserService;
import com.guo.util.CookieUtil;
import com.guo.util.HostHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
//1. 首先实现HandlerInterceptor
//2. 重写方法:preHandle、postHandle、afterCompletion
//拦截器:用于拦截ticket的信息
@Component
public class LoginTicketInterceptor implements HandlerInterceptor {
   

    @Autowired
    private UserService userService;

    @Autowired
    private HostHolder hostHolder;
    /**
     * preHandle:在controller之前执行
     * @param request request可以用于从cookie中取出凭证
     * @param response
     * @param handler 拦截的目标
     * @return 在controller之前通过ticket取用户登录信息
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
   
        //1.从cookie中获取ticket 可以通过自定义util获取
        String ticket = CookieUtil.getValue(request, "ticket");
        //2.根据ticket获取用户
        if (ticket != null){
   
            //根据凭证获取凭证对应的实体类
            LoginTicket loginTicket = userService.findLoginTicket(ticket);
            //验证凭证有有效性[不为空且未过有效期且状态有效]
            if (loginTicket != null && loginTicket.getStatus() == 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值