欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Session存放token/获取token,销毁session

程序员文章站 2022-07-03 08:59:26
...

Session存放token/获取token,销毁session

这里记录下session使用.方便学习
session使用的是: javax.servlet.http.HttpSession
话不多说了.直接上代码!

java代码

request.getSession().setAttribute(“token”, token);
这里是放了个token,也可以直接放user对象.直接获取到user

controller类:

import com.email.demo.bean.User;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

@Api(value = "用户登录session", tags = {"用户登录session"})
@Slf4j
@Validated
@RestController
@RequestMapping("/session")
public class SessionController {

    /**
     * 登录生成token,存入到session中
     * @param user
     * @param request
     * @return
     */
    @PostMapping("/login")
    public String login(@RequestBody User user, HttpServletRequest request){

        String token = generateToken(user);
        request.getSession().setAttribute("token", token);

        log.info("成功将token: {}放入到Session中", token);

        return "登录成功!";
    }

    /**
     * 生成token
     * @param user
     * @return
     */
    private String generateToken(User user){

        // 随便组装一个token.这里可以根据自己想要的加密来生成
        String token = user.getUserName() + ","  + user.getPassword() + ","  + user.getCode();
        log.info("生成的token为: {}", token);

        return token;
    }

    /**
     * 访问首页,从session中获取token
     * @param request
     * @return
     */
    @GetMapping("/index")
    public User index(HttpServletRequest request){

        // todo 根据用户名和密码去数据库查询查一些个权限这类的,这里就是进入业务一些个操作
        User user = new User();
        String token = (String) request.getSession().getAttribute("token");
        log.info("获取到的token为: {}", token);
        if(StringUtils.isBlank(token)){
            log.info("session已销毁,无法获取到!");
            return new User();
        }

        String[] str = token.split(",");
        String userName = str[0];
        String password = str[1];
        String code = str[2];
        user.setUserName(userName);
        user.setPassword(password);
        user.setCode(code);

        return user;
    }

    /**
     * 退出登录,销毁session
     * @param request
     * @return
     */
    @GetMapping("/loginOut")
    public String loginOut(HttpServletRequest request){

        request.getSession().removeAttribute("token");
        log.info("销毁session成功!");

        return "销毁session成功!";
    }
}

user类

import lombok.Data;

@Data
public class User {

    /**
     * 用户名
     */
    private String userName;

    /**
     * 密码
     */
    private String password;

    /**
     * 验证码
     */
    private String code;
}

测试

这里还是使用的swagger测试.

1.登录用户

用户参数为:
{
“code”: “1178”,
“password”: “abc123456”,
“userName”: “zhangsan”
}

Session存放token/获取token,销毁session
控制台打出结果:
Session存放token/获取token,销毁session

2.访问首页,获取session及token

无参数.直接请求就好
Session存放token/获取token,销毁session
控制台打印结果:
Session存放token/获取token,销毁session

3.退出登录,销毁session

无参数.直接请求
Session存放token/获取token,销毁session
控制台打印:
Session存放token/获取token,销毁session

4.再次请求首页

Session存放token/获取token,销毁session
token没有了.返回一个新new的对象
控制台打印:
Session存放token/获取token,销毁session
测试结果OK!
欢迎大佬们留言评论,共同学习!!!感谢!!!

===========================
原创文章,转载注明出处!