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

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”
}

在这里插入图片描述
控制台打出结果:
在这里插入图片描述

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

无参数.直接请求就好
在这里插入图片描述
控制台打印结果:
在这里插入图片描述

3.退出登录,销毁session

无参数.直接请求
在这里插入图片描述
控制台打印:
在这里插入图片描述

4.再次请求首页

在这里插入图片描述
token没有了.返回一个新new的对象
控制台打印:
在这里插入图片描述
测试结果OK!
欢迎大佬们留言评论,共同学习!!!感谢!!!

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

猜你喜欢

转载自blog.csdn.net/dayonglove2018/article/details/106837406
今日推荐