SpringBoot 整合security 实现自定义Token和clientId登录及退出(三)

代码写好了,我们可以来测试一下写得是否满足我们的需求
测试工具:postman
在这里插入图片描述
在登录接口,输入用户名和密码
在这里插入图片描述
发送请求
在这里插入图片描述
获得用户返回的信息
数据库user_token 新增一条数据(这里就不截图了)

在新建一个请求

@RestController
@RequestMapping(value = "api")
@SuppressWarnings("all")
public class UserController {
    @Autowired
    private UserService userService;
    @ResponseBody
    @PostMapping(value = "selectAll")
    public ResultData selectUser() {
        List<UserInfo> userInfos = userService.selectAll();
        ResultData resultData = new ResultData();
        resultData.setCode(1);
        resultData.setMsg("sucess");
        resultData.setData(userInfos);
        return resultData;
    }
}

发送请求
在这里插入图片描述
在headers 加上登录的clientId 和 accessToken
在这里插入图片描述
成功查询到数据

最后再创建个退出登录的处理

package com.example.demo.base.common;

import com.example.demo.base.dto.ResultData;
import com.example.demo.base.dto.UserDetailsInfo;
import com.example.demo.base.service.TokenService;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.stereotype.Component;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 用户退出登录处理
 */
@Component
@SuppressWarnings("all")
public class DemoLogoutSuccessHandler implements LogoutSuccessHandler {

    @Autowired
    private TokenService tokenService;

    @Override
    public void onLogoutSuccess(HttpServletRequest httpServletRequest,
                                HttpServletResponse httpServletResponse,
                                Authentication authentication) throws IOException, ServletException {
        Gson gson = new Gson();
        ResultData resultData = new ResultData(1, "logout successful", null);
        if (authentication != null && authentication.getPrincipal() != null) {
            String clientId = httpServletRequest.getHeader("clientId");
            // 删除Token
            tokenService.deleteToken(clientId);
        }
        httpServletResponse.getWriter().write(gson.toJson(resultData));
    }
}

退出登录
在这里插入图片描述
使用token再访问时,就会失败
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.猫的树

你的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值