用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程

本文详细介绍了如何使用SpringBoot创建一个初级表白墙项目,涉及前后端交互接口的定义,前端HTML页面的编写(包括登录和主页),以及后端Java代码实现,包括login和getUserInfo方法的逻辑。
摘要由CSDN通过智能技术生成

🧸注:不要看我的文件多,那是我的其他项目,这个项目所用的文件我会全部用红框框起来,没框的部分不用管,前端两个文件,后端一个文件 📜

🧸欢迎来到dream_ready的博客,📜相信你对这篇博客也感兴趣o (ˉ▽ˉ;)

表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学

目录

首先,定义前后端交互接口

然后,创建一个SpringBoot项目

编写前端页面

登录(login.html): 

主页(index.html)

编写后端代码

方法login处理逻辑:

方法getUserInfo处理逻辑:


首先,定义前后端交互接口

讲解:

  1.         登录接口路径可以较为随意的设定,但参数必须有账号密码,也就是username和password,后端进行校验后返回校验成功,还是校验失败,也就是true和false
  2.         获取用户的登录信息,不需要传任何参数,只需要前端发送请求后,后端将当前登录用户的名称返回即可

然后,创建一个SpringBoot项目

如何创建一个SpringBoot项目——超详细教程

编写前端页面

        在resource目录下的static目录下创建登录和主页html页面,此处我将其分别命名为 login.html和index.html

如图红框位置:

登录(login.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() {
    console.log("登录");
    $.ajax({  // ajax 发送请求
      url: "/user/login",   // 请求路径
      type: "post",         // 请求类型
      data:{               // 传递的参数
        "userName": $("#userName").val(),
        "password": $("#password").val()
      },
      success:function(result){    // 如果响应成功了(有响应),则执行此回调函数  result 表示后端返回的结果
        if(result){
          location.href = "/index.html";   // 页面跳转
          // location.assign();
        }else{
          alert("密码错误");    // 弹框
        }
      }
    });
  }

</script>
</body>

</html>

代码逻辑: 从input输入框内获取username和password参数,向后端发送post请求将参数发送过去,后端进行校验,如果后端响应为true,则说明响应成功(账号密码正确),执行回调函数跳转页面到index.html (主页)

主页(index.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({
            url: "/user/getUserInfo",
            type: "get",
            success:function (username){
                $("#loginUser").text(username);   // text 表示往该选择器放值,此处放username这个值
            }
        });
</script>
</body>

</html>

代码逻辑:来到该页面,立即向后端发送get请求,获取用户名username并展示到该页面上

编写后端代码

创建Java文件,我将其命名为userController

 以下是全部代码

@RequestMapping("/user")
@RestController
public class UserController {
    @RequestMapping("/login")
    public Boolean login(String userName, String password, HttpSession session){
        // 校验参数的合法性
//        if(userName == null || userName.length()==0 || password == null || password.length() == 0){
//            return false;
//        }

        if(!StringUtils.hasLength(userName) || !StringUtils.hasLength(password)){
            return false;
        }

        // 进行用户名和密码的校验
        if("admin".equals(userName) && "admin".equals(password)){
            // 设置session
            session.setAttribute("username","admin");
            return true;
        }
        return false;
    }

    @RequestMapping("/getUserInfo")
    public String getUserInfo(HttpSession session){
        // 从Session获取登录用户
        String userName = (String) session.getAttribute("username");
        return userName;
    }
}

方法login处理逻辑:

  1. 先校验参数合法性,判断是否为空等
  2. 然后进行用户名和密码的校验,判断是否是正确的用户名和密码
  3. 如果以上校验都通过,则设置session,存放username,以便后续使用

方法getUserInfo处理逻辑:

从session中获取username并返回给前端

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是一个基于Spring Boot前后端分离,使用过滤器实现用户登录的代码示例: 后端代码: 1. 定义一个过滤器,用于验证用户是否登录,如果未登录则拦截请求并返回未登录提示信息。 ```java @Component public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; // 判断用户是否已经登录 HttpSession session = request.getSession(false); if (session == null || session.getAttribute("user") == null) { // 如果未登录,则返回未登录提示信息 response.setContentType("application/json;charset=UTF-8"); response.getWriter().write("{\"code\":401,\"msg\":\"未登录\"}"); return; } // 如果已登录,则放行请求 filterChain.doFilter(request, response); } } ``` 2. 在Spring Boot的配置类中配置过滤器,指定过滤器拦截的路径。 ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private LoginFilter loginFilter; // 添加过滤器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginFilter) .addPathPatterns("/api/**") // 拦截所有/api/**的请求 .excludePathPatterns("/api/user/login"); // 除了登录请求,其他请求都需要登录才能访问 } } ``` 3. 在Controller中添加登录接口,用于验证用户登录,并将用户信息存入Session中。 ```java @RestController @RequestMapping("/api/user") public class UserController { @PostMapping("/login") public Result login(@RequestBody User user, HttpSession session) { // 验证用户账号密码是否正确,这里省略具体实现 if ("admin".equals(user.getUsername()) && "123456".equals(user.getPassword())) { // 如果账号密码正确,则将用户信息存入Session session.setAttribute("user", user); return Result.success(); } else { return Result.error("账号或密码错误"); } } } ``` 前端代码: 1. 在登录页面中,获取用户输入的账号密码,并发送登录请求。 ```html <form> <div class="form-group"> <label for="username">用户名:</label> <input type="text" class="form-control" id="username" name="username"> </div> <div class="form-group"> <label for="password">密码:</label> <input type="password" class="form-control" id="password" name="password"> </div> <button type="button" class="btn btn-primary" onclick="login()">登录</button> </form> ``` ```javascript function login() { var username = $("#username").val(); var password = $("#password").val(); $.ajax({ url: "/api/user/login", type: "POST", contentType: "application/json;charset=UTF-8", data: JSON.stringify({username: username, password: password}), success: function (result) { if (result.code == 200) { // 登录成功 window.location.href = "/index.html"; } else { // 登录失败,显示错误信息 alert(result.msg); } } }); } ``` 2. 在其他页面中,需要判断用户是否已登录,如果未登录则跳转到登录页面。 ```javascript $(function () { $.ajax({ url: "/api/user", type: "GET", success: function (result) { if (result.code == 401) { // 用户未登录,跳转到登录页面 window.location.href = "/login.html"; } } }); }); ``` 以上就是一个基于Spring Boot前后端分离,使用过滤器实现用户登录的代码示例,希望能对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dream_ready

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值