单点登录注销实现

需要将浏览器中的cookie删除,删除缓存中的数据

@RequestMapping("/logout")
    public String logout(HttpServletRequest request,HttpServletResponse response){
        //1.如何获取JT_TICKET值???
        Cookie[] cookies = request.getCookies();
        String token=null;
        for (Cookie cookie : cookies) {
            if("JT_TICKET".equals(cookie.getName())){
                token=cookie.getValue();
                System.out.println("cookie"+token);
                break;
            }
        }
        if(!StringUtils.isEmpty(token))
        {
            //表示token数据不为空
            jedisCluster.del(token);
            //删除cookie
            Cookie cookie=new Cookie("JT_TICKET", "");
            //设置路径 -- > 对谁有效
            cookie.setPath("/");
            cookie.setMaxAge(0);
            response.addCookie(cookie);
        }
        //重定向到商城主页
        return "redirect:/index.html";
    }
package com.jt.web.controller;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.jt.common.po.User;
import com.jt.common.vo.SysResult;
import com.jt.web.service.UserService;

import redis.clients.jedis.JedisCluster;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @Autowired
    private JedisCluster jedisCluster;
    @RequestMapping("/{module}")
    public String module(@PathVariable String module) {
        return module;
    }

    // service/user/doRegister
    @RequestMapping("/doRegister")
    @ResponseBody
    public SysResult saveUser(User user) {
        try {
            userService.saveUser(user);
            return SysResult.oK();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return SysResult.build(201, "用户注册失败");
    }
    /**
     * 实现用户登录
     * @param user
     * @return
     * 核心:将用户token秘钥写入到浏览器cookie中
     * cookie.setMaxAge(7*3600*24);//7天超时,1小时3600s,1天24h
     * cookie.setMaxAge(0);//立即删除
     * cookie.setMaxAge(-1);//当前会话关闭后删除
     */
    @RequestMapping("/doLogin")
    @ResponseBody
    public SysResult findUserByUP(User user,HttpServletResponse response){
        try {
            String token=userService.findUserByUP(user);
            if(StringUtils.isEmpty(token)){
                return SysResult.build(201, "用户名或密码错误");
            }
            //如果程序执行到这里表示token一定不为null,将数据写入Cookie
            Cookie cookie=new Cookie("JT_TICKET", token);
            cookie.setMaxAge(7*3600*24);//7天超时,1小时3600s,1天24h
            cookie.setPath("/"); //表示Cookie的所有者
            response.addCookie(cookie);//将Cookie写入浏览器
            return SysResult.oK();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return SysResult.build(201, "用户名或密码错误");
    }
    /**
     * 1.通过JT_TICKET获取token数据
     * 2.根据token删除redis的缓存数据
     * 3.将cookie删除
     * @return
     */
    @RequestMapping("/logout")
    public String logout(HttpServletRequest request,HttpServletResponse response){
        //1.如何获取JT_TICKET值???
        Cookie[] cookies = request.getCookies();
        String token=null;
        for (Cookie cookie : cookies) {
            if("JT_TICKET".equals(cookie.getName())){
                token=cookie.getValue();
                System.out.println("cookie"+token);
                break;
            }
        }
        if(!StringUtils.isEmpty(token))
        {
            //表示token数据不为空
            jedisCluster.del(token);
            //删除cookie
            Cookie cookie=new Cookie("JT_TICKET", "");
            //设置路径 -- > 对谁有效
            cookie.setPath("/");
            cookie.setMaxAge(0);
            response.addCookie(cookie);
        }
        //重定向到商城主页
        return "redirect:/index.html";
    }
}




注销前

[root@localhost sentinel]# redis-cli -p 7002
127.0.0.1:7002> keys *
1) "774c94e901eb9fdde7219a6d880267f1"
2) "ITEM_CAT_162"
3) "ITEM_CAT_0"
127.0.0.1:7002> get 774c94e901eb9fdde7219a6d880267f1
"{\"created\":1515924386000,\"updated\":1515924386000,\"id\":7,\"username\":\"admin123\",\"password\":\"a66abb5684c45962d887564f08346e8d\",\"phone\":\"17600336886\",\"email\":\"17600336886\"}"

注销后

[root@localhost sentinel]# redis-cli -p 7002
127.0.0.1:7002> keys *
1) "ITEM_CAT_162"
2) "ITEM_CAT_0"

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容