当前位置: 首页 > 知识库问答 >
问题:

Spring Boot + Vue登录注册:前端用户登录状态判断方法?

尚嘉勋
2024-05-04

最近在看springboot + vue登录注册,发现登录有个简单的实现方式,就是用户登录之后,将用户信息放入后端session中,然后通过判断session是否存在用户信息,从而判断用户是否登录。

这是后端的登录校验逻辑,同时我在想前端怎么判断用户登录呢?因为如果没有登录需要跳转到登录界面。

我有一个想法就是:
后端登录成功后,往response header中填充一个自定义header,比如 X-Login,值为true或者false,然后前端通过X-Login的值从而判断是否登录。

代码大概长这个样子:

    @PostMapping("/login")    public void login(HttpSession httpSession, HttpServletResponse response, @RequestBody User user) throws Exception {        // 真实场景是密码从数据库查询,而不是简单的 1234        log.info("login");        if (!"1234".equals(user.getPassword())) {            throw new Exception("用户名或密码不正确");        }        // 登录成功,将信息加入 session 中        httpSession.setAttribute("user", user);                // 方便前端判断登录状态        response.setHeader("X-Login", "true");    }    @DeleteMapping("/logout")    public void logout(HttpSession httpSession, HttpServletResponse response) {        httpSession.removeAttribute("user");        // 方便前端判断登录状态        response.setHeader("X-Login", "false");    }

请问可以这样实现吗,有没有什么问题?

共有3个答案

颛孙喜
2024-05-04

用JWT的话:

@PostMapping("/login")public ResponseEntity<?> login(HttpServletResponse response, @RequestBody User user) {    log.info("login");    if (!"1234".equals(user.getPassword())) {        return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("用户名或密码不正确");    }    String token = jwtService.generateToken(user);    Cookie cookie = new Cookie("token", token);    cookie.setHttpOnly(true);    response.addCookie(cookie);    return ResponseEntity.ok().body("登录成功");}@DeleteMapping("/logout")public ResponseEntity<?> logout(HttpServletResponse response) {    Cookie cookie = new Cookie("token", null);    cookie.setHttpOnly(true);    cookie.setMaxAge(0);    response.addCookie(cookie);    return ResponseEntity.ok().body("登出成功");}
卢黎明
2024-05-04

登录注册是互联网基建,就不要再想着自己瞎琢磨了,现有方案找一个来用就可以。另外,基础原理都是一样的,也不用想太多。

  1. cookie,登录后由服务器响应写入。好处是随时携带,坏处是得准备防 XSS 和 CSRF。
  2. SSO 的各种 code,去服务器换 token 写入本地。好处是不太需要担心 CSRF,坏处是要手动发送。

选好之后,根据你选择的方案来判断即可。

姚丰羽
2024-05-04

你使用了springboot + vue那应该就是前后分离,前后分离项目,就不用session了,直接用token,用的是 springboot 那就用 Spring Security 做权限控制,你那登录里面返回的就是一个jwt 生成的token给前端,前端每次请求,都在header里面增加一个Authorization,吧这个token带给后端

后端看下这个:https://github.com/spring-projects/spring-security-samples/tree/main/servlet/spring-boot/java/jwt/login

前端简单,就上面说的,每次请求带上 headers.Authorization = 'Bearer ' + localStorage.getItem("token");

判断是否登录,先看 localStorage.getItem("token")是否存在,再后端验证一下是否过期

 类似资料:
  • cmf_is_user_login() 功能 判断前台用户是否登录 参数 无 返回 boolean

  • X1.0新增 sp_is_user_login() 功能: 判断用户是否已经登录 参数: 无 返回: 类型布尔 true/false

  • 如果你已有幕布,直接登录即可。如果还没有账号,可以使用手机号码注册幕布账号,也可以通过QQ、微信直接注册并登录。 注:微信登录方式需要手机上安装有微信。 账号设置与绑定 登录幕布后,点左上角的头像或者轻按屏幕从左往右滑动,选择「应用设置 - 账号设置」。在这里可以修改头像和昵称,设置密码,绑定手机号码、微信、QQ账号。 注: 绑定手机后才可以设置账号密码,手机号即为账号。 解除绑定需要在电脑上登录

  • 在首页点击注册进入注册页面,你可以使用手机号码注册幕布账号,也可以通过QQ、微信账户直接创建账号并登录。 账号设置与绑定 登录幕布后,点击右上角处用户头像,在下拉菜单中选择「账号设置」。在这里可以修改头像和昵称,设置密码,绑定手机号码、微信、QQ账号,查看账号是否为高级版以及高级版到期时间。 注: 绑定手机后才可以设置账号密码,手机号即为账号。 解绑最后一个登录方式后,账号将无法登录,请注意将文档

  • 注册 / 登录 1.注册 注册入口: 访问 http://www.aikf.com/ 点击右上角注册按钮 输入注册手机号、图形验证码、手机验证码等进行注册 其他注册入口:手机登录http:/www.aikf.com/ 爱客服官方微信公众号注册:点击立即注册 2.登录 登录入口: 访问http://www.aikf.com/ 点击登录 输入用户名及登录密码,点击登录(见下图) 2.修改密码 在登录入

  • cmf_is_user_login() 功能 判断前台用户是否登录 参数 无 返回 boolean