La sesión almacena el token / obtiene el token, destruye la sesión

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



Inserte la descripción de la imagen aquí
La consola imprime el resultado:
Inserte la descripción de la imagen aquí

2. Visite la página de inicio para obtener la sesión y el token

Sin parámetros. Solo solicítalo directamente. La
Inserte la descripción de la imagen aquí
consola imprime el resultado:
Inserte la descripción de la imagen aquí

3. Cerrar sesión y destruir la sesión

Sin parámetros. Solicite directamente a la
Inserte la descripción de la imagen aquí
consola que imprima:
Inserte la descripción de la imagen aquí

4. Solicita la página de inicio nuevamente

Inserte la descripción de la imagen aquí
El token se ha ido. Devuelve un nuevo objeto. La
consola imprime: ¡El
Inserte la descripción de la imagen aquí
resultado de la prueba es correcto! ¡
Bienvenido a dejar un comentario y aprender juntos! ¡Gracias!

===========================
Artículo original, reimpreso con la fuente.

Supongo que te gusta

Origin blog.csdn.net/dayonglove2018/article/details/106837406
Recomendado
Clasificación