La sesión almacena el token / obtiene el token, destruye la sesión
Registre el uso de la sesión aquí. Es conveniente aprender el
uso de la sesión: javax.servlet.http.HttpSession.
No hay mucho que decir. ¡Vaya directamente al código!
código java
request.getSession (). setAttribute ("token", token);
Aquí hay un token, o puede poner directamente el objeto de usuario. Obtener el usuario directamente
Clase de controlador:
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成功!";
}
}
clase de usuario
import lombok.Data;
@Data
public class User {
/**
* 用户名
*/
private String userName;
/**
* 密码
*/
private String password;
/**
* 验证码
*/
private String code;
}
prueba
La prueba de arrogancia todavía se usa aquí.
1. Iniciar sesión como usuario
Los parámetros de usuario son:
{ "código": "1178", "contraseña": "abc123456", "nombre de usuario": "zhangsan" }
La consola imprime el resultado:
2. Visite la página de inicio para obtener la sesión y el token
Sin parámetros. Solo solicítalo directamente. La
consola imprime el resultado:
3. Cerrar sesión y destruir la sesión
Sin parámetros. Solicite directamente a la
consola que imprima:
4. Solicita la página de inicio nuevamente
El token se ha ido. Devuelve un nuevo objeto. La
consola imprime: ¡El
resultado de la prueba es correcto! ¡
Bienvenido a dejar un comentario y aprender juntos! ¡Gracias!
===========================
Artículo original, reimpreso con la fuente.