基于SpringBoot的用户登录

文章目录


前言

用户登录

需求:用户输入账号和密码,后端进行校验密码是否正确

1.如果不正确,前端进行用户告知

2.如果正确,跳转到首页,首页显示当前登录用户

3.后续再访问首页,可以获取到登录用户信息


一、前端文件放置

二、约定前后端交互接口

1.需求分析

对于后端开发人员而言,不涉及前端页面的展示,只需要提供两个功能

(1)登录页面:通过账号和密码,校验输入的账号和密码是否正确,并告知前端

(2)首页:告知前端当前登录用户,如果当前已有用户登录,返回登录的账号,如果没有,返回空

2.接口的定义

(1)校验接口

c 复制代码
请求路径:/user/login
请求方式:POST
接口描述:校验账号密码是否正确

请求参数:

参数名 类型 是否必须 备注
userName String 校验的账号
password String 校验的密码

响应数据:

c 复制代码
Content-Type:text/html

响应内容:
true:账号密码验证成功
false:账号密码验证失败

查询用户接口:

c 复制代码
请求路径:/user/getLoginUser
请求方式:GET
接口描述:查询当前登录的用户

请求参数:无

响应数据:

c 复制代码
Content-Type:test/html

响应内容:用户名

三、代码实现

1.服务器端代码实现

java 复制代码
package com.example.demo;

import jakarta.servlet.http.HttpSession;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/user")
@RestController
public class UserController {
    @RequestMapping("/login")
    public Boolean login(String userName, String password, HttpSession session) {
        if (!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)) {
            return false;
        }
        if (!"admin".equals(userName) && !"admin".equals(password)) {
            return false;
        }
        session.setAttribute("userName",userName);
        return true;
    }
    @RequestMapping("/getLoginUser")
    public String getLoginUser(HttpSession session) {
        String userName = (String) session.getAttribute("userName");
        if (StringUtils.hasLength(userName)) {
            return userName;
        }
        return "";


    }
}

2.客户端代码实现

(1)index.html

html 复制代码
<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>用户登录首页</title>
</head>

<body>
    登录人: <span id="loginUser"></span>

    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
    <script>
        $.ajax({
            type:"get",
            url:"/user/getLoginUser",
            success:function (result){
                $("#loginUser").text(result);
            }
        });

    </script>
</body>

</html>

(2)login.html

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>登录页面</title>
</head>

<body>
  <h1>用户登录</h1>
  用户名:<input name="userName" type="text" id="userName"><br>
  密码:<input name="password" type="password" id="password"><br>
  <input type="button" value="登录" onclick="login()">
  
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
  <script>
    function login() {
      $.ajax({
        type:"post",
        url:"/user/login",
        data: {
          "userName":$("#userName").val(),
          "password":$("#password").val(),
        },
        success:function (result) {
          if (result) {
            location.href="/index.html"
          }else{
            alert("账号或密码有误.");
          }
        }
      })
    
    }

  </script>
</body>

</html>

四、运行结果


总结

前端页面设计 login.html包含用户名和密码输入框,通过Ajax发送POST请求到/user/login接口 index.html通过Ajax GET请求/user/getLoginUser获取当前登录用户信息 使用jQuery简化DOM操作和Ajax请求处理

后端接口设计 登录接口/user/login接收userName和password参数,校验成功后设置session 获取登录用户接口/user/getLoginUser从session中读取当前登录状态 采用HttpSession实现会话跟踪,保持用户登录状态

校验逻辑实现 对空输入进行验证,避免无效请求 硬编码示例中账号密码均为"admin",实际项目应连接数据库验证 通过session.setAttribute()存储登录状态

前后端交互规范 登录接口返回Boolean类型结果,前端根据响应跳转或提示错误 获取用户接口返回字符串类型用户名,前端动态显示 统一使用Content-Type:text/html简化响应处理

相关推荐
qq_2975746710 小时前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚10 小时前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学10 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang2015092811 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
Re.不晚11 小时前
Java入门17——异常
java·开发语言
缘空如是11 小时前
基础工具包之JSON 工厂类
java·json·json切换
追逐梦想的张小年11 小时前
JUC编程04
java·idea
好家伙VCC11 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
南极星100512 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
消失的旧时光-194312 小时前
第十三课:权限系统如何设计?——RBAC 与 Spring Security 架构
java·架构·spring security·rbac