SpringBoot + layui 框架实现一周免登陆功能

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:SpringBoot 框架从入门到精通
✨特色专栏:国学周更-心性养成之路
🥭本文内容:SpringBoot + layui 框架实现一周免登陆功能

在这里插入图片描述
要实现一周免登录功能,您可以使用Spring Boot和Layui框架配合完成。以下是一种可能的实现方式:

创建一个名为User的实体类,用于表示用户信息,其中包含用户的用户名和密码等字段,以及用于标记用户是否选择一周免登陆的rememberMe字段。

@Entity
@Table(name = "users")
public class User implements Serializable {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(unique = true, nullable = false)private String username;@Column(nullable = false)private String password;private boolean rememberMe;// Getters and Setters// ...
}

创建一个名为UserRepository的接口,用于对User实体进行数据库操作。

@Repository
public interface UserRepository extends JpaRepository<User, Long> {User findByUsername(String username);
}

创建一个名为UserService的服务类,用于处理用户相关的业务逻辑。在这个类中,添加一个方法用于验证用户的登录,并根据用户是否选择一周免登陆来设置相关的Cookie。

@Service
public class UserService {private UserRepository userRepository;@Autowiredpublic void setUserRepository(UserRepository userRepository) {this.userRepository = userRepository;}public boolean login(String username, String password, boolean rememberMe, HttpServletResponse response) {User user = userRepository.findByUsername(username);if (user != null && user.getPassword().equals(password)) {if (rememberMe) {// 设置一周免登陆的Cookie,有效期为7天Cookie cookie = new Cookie("rememberMe", "true");cookie.setMaxAge(7 * 24 * 60 * 60);  // 7天的秒数cookie.setPath("/");response.addCookie(cookie);user.setRememberMe(true);userRepository.save(user);}return true;}return false;}
}

创建一个名为LoginController的控制器类,用于处理用户登录的请求。

@Controller
public class LoginController {private UserService userService;@Autowiredpublic void setUserService(UserService userService) {this.userService = userService;}@RequestMapping("/login")public String login(String username, String password, boolean rememberMe, HttpServletResponse response) {if (userService.login(username, password, rememberMe, response)) {return "redirect:/home";  // 登录成功后跳转到主页}return "redirect:/login?error";  // 登录失败跳转回登录页面,并带上错误参数}
}

在对应的登录页面中使用Layui框架的表单组件,将用户名、密码和记住我选项组织成一个表单,并向LoginController的登录请求发送POST请求。

<!DOCTYPE html>
<html>
<head><title>登录</title><!-- 引入Layui的相关资源 --><link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.4/css/layui.min.css"><script src="https://cdn.staticfile.org/layui/2.5.4/layui.min.js"></script>
</head>
<body><div class="layui-container"><form class="layui-form" action="/login" method="post"><div class="layui-form-item"><label class="layui-form-label">用户名</label><div class="layui-input-block"><input type="text" name="username" lay-verify="required" autocomplete="off" placeholder="请输入用户名" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">密码</label><div class="layui-input-block"><input type="password" name="password" lay-verify="required" autocomplete="off" placeholder="请输入密码" class="layui-input"></div></div><div class="layui-form-item"><div class="layui-input-block"><input type="checkbox" name="rememberMe" title="记住我" lay-skin="primary"><button class="layui-btn" lay-submit lay-filter="formDemo">登录</button></div></div></form></div><script>layui.use(['form'], function() {var form = layui.form;// 表单验证form.verify({required: function(value, item) {if(value.length < 1) {return '该项不能为空';}}});// 监听表单提交form.on('submit(formDemo)', function(data) {// 获取表单数据并提交var username = data.field.username;var password = data.field.password;var rememberMe = data.field.rememberMe === 'on';// 发送AJAX请求提交登录表单$.ajax({url: '/login',type: 'POST',data: {username: username,password: password,rememberMe: rememberMe},success: function(res) {// 登录成功后的逻辑处理if (res.success) {window.location.href = '/home';} else {layer.msg(res.message, {icon: 2});}},error: function() {layer.msg('服务器错误', {icon: 2});}});return false; // 阻止表单提交});});</script>
</body>
</html>

在上述代码中,我们使用了Layui的form模块进行表单的验证和提交。form.verify()函数用于定义表单字段的验证规则,这里只提供了一个required规则作为示例。

form.on(‘submit(formDemo)’, function(data) {})函数用于监听表单提交事件,并在提交时使用AJAX发送登录请求。提交成功后,根据服务器的响应进行相应的处理。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/95451.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

简介 pwn是ctf比赛的方向之一&#xff0c;也是门槛最高的&#xff0c;学pwn前需要很多知识&#xff0c;这里建议先去在某宝上买一本汇编语言第四版&#xff0c;看完之后学一下python和c语言&#xff0c;python推荐看油管FreeCodeCamp的教程&#xff0c;c语言也是 pwn题目大部…

PostgreSQL 查询语句大全

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Flutter(九)Flutter动画和自定义组件

目录 1.动画简介2.动画实现和监听3. 自定义路由切换动画4. Hero动画5.交织动画6.动画切换7.Flutter预置的动画过渡组件自定义组件1.简介2.组合组件3.CustomPaint 和 RenderObject 1.动画简介 Animation、Curve、Controller、Tween这四个角色&#xff0c;它们一起配合来完成一个…

【洛谷】P3853 路标设置

原题链接&#xff1a;https://www.luogu.com.cn/problem/P3853 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路&#xff1a;二分答案 由题意知&#xff0c;公路上相邻路标的最大距离定义为该公路的“空旷指数”。在公路上增设一些路标&…

小程序快速备案助手代备案小程序开发

小程序快速备案助手代备案小程序开发 用户注册与登录&#xff1a;用户可以通过手机号或其他方式进行注册和登录&#xff0c;以便进行备案相关操作。备案信息填写&#xff1a;用户可以填写小程序的备案信息&#xff0c;包括小程序名称、小程序服务类目、域名等。备案材料上传&a…

三维点云转换为二维图像

文章目录 前言原理代码总结与反思实验结果展示 前言 目的&#xff1a;将三维点云转换为二维图像 作用&#xff1a; a.给点云赋予彩色信息&#xff0c;增强点云所表达物体或对象的辨识度&#xff1b; b.将三维点云中绘制的目标物体通过映射关系绘制到二维图像中&#xff0c;这个…

C++:初识类与this指针

文章目录 前言一、类类的定义和实例化类的访问限定符类的作用域计算类的大小 二、类的成员函数的this指针总结 个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》 前言 一、类 类的定义和实例化 注意类定义结束时后面分号( ; )不能省略。 类…

【前端demo】倒计时器 可选择时间 原生实现

文章目录 效果过程日历与获取时间居中背景与字计时器清空计时器 代码HTMLCSSJS 其他demo 效果 效果预览&#xff1a;倒计时器 可选择时间 (codepen.io) 参考&#xff1a; Simple Clock/Countdown timer (codepen.io) 前端页面实现倒计时效果的几种方法_前端倒计时__Boboy的…

2023年“羊城杯”网络安全大赛 Web方向题解wp 全

团队名称&#xff1a;ZhangSan 序号&#xff1a;11 不得不说今年本科组打的是真激烈&#xff0c;初出茅庐的小后生没见过这场面QAQ~ D0n’t pl4y g4m3!!! 简单记录一下&#xff0c;实际做题踩坑很多&#xff0c;尝试很多。 先扫了个目录&#xff0c;扫出start.sh 内容如下…

微信小程序手机号快速验证组件调用方式

目录 一、测试环境 二、问题现象 三、总结 手机号验证组件&#xff08;包括快速验证组件和实时验证组件&#xff09;调用后无法对事件进行回调这个问题&#xff0c;先说结论&#xff0c;以下是正确的使用方式&#xff1a; <!-- 手机号快速验证组件 --> <button op…

【LeetCode-中等题】199. 二叉树的右视图

文章目录 题目方法一&#xff1a;层序遍历取每一层最后一个元素方法二&#xff1a;深度优先搜索 题目 方法一&#xff1a;层序遍历取每一层最后一个元素 // 方法一 &#xff1a;层序 集合(取每层子集合最后一个元素)// List<List<Integer>> Rlist new ArrayList…

2023数学建模国赛四天速成计划来啦!(内含大量资料)

大家好呀。高教社杯全国大学生数学建模竞赛&#xff08;下称国赛&#xff09;9.7日下午6点就正式开始了&#xff1a; 在这里给大家带来一个五天的速成计划啦&#xff01;大家可以收藏本文章或者转发到你们队友群哈&#xff0c;此外我还会发放很多资料给大家&#xff0c;注意&am…