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”
}
控制台打出结果:
2.访问首页,获取session及token
无参数.直接请求就好
控制台打印结果:
3.退出登录,销毁session
无参数.直接请求
控制台打印:
4.再次请求首页
token没有了.返回一个新new的对象
控制台打印:
测试结果OK!
欢迎大佬们留言评论,共同学习!!!感谢!!!
===========================
原创文章,转载注明出处!
上一篇: React学习:state
下一篇: React之状态(State)