SpringBoot?+?layui?框架實現(xiàn)一周免登陸功能示例詳解
要實現(xiàn)一周免登錄功能,您可以使用Spring Boot和Layui框架配合完成。以下是一種可能的實現(xiàn)方式:
創(chuàng)建一個名為User的實體類,用于表示用戶信息,其中包含用戶的用戶名和密碼等字段,以及用于標(biāo)記用戶是否選擇一周免登陸的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 // ... }
創(chuàng)建一個名為UserRepository的接口,用于對User實體進(jìn)行數(shù)據(jù)庫操作。
@Repository public interface UserRepository extends JpaRepository<User, Long> { User findByUsername(String username); }
創(chuàng)建一個名為UserService的服務(wù)類,用于處理用戶相關(guān)的業(yè)務(wù)邏輯。在這個類中,添加一個方法用于驗證用戶的登錄,并根據(jù)用戶是否選擇一周免登陸來設(shè)置相關(guān)的Cookie。
@Service public class UserService { private UserRepository userRepository; @Autowired public 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) { // 設(shè)置一周免登陸的Cookie,有效期為7天 Cookie cookie = new Cookie("rememberMe", "true"); cookie.setMaxAge(7 * 24 * 60 * 60); // 7天的秒數(shù) cookie.setPath("/"); response.addCookie(cookie); user.setRememberMe(true); userRepository.save(user); } return true; } return false; } }
創(chuàng)建一個名為LoginController的控制器類,用于處理用戶登錄的請求。
@Controller public class LoginController { private UserService userService; @Autowired public 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"; // 登錄成功后跳轉(zhuǎn)到主頁 } return "redirect:/login?error"; // 登錄失敗跳轉(zhuǎn)回登錄頁面,并帶上錯誤參數(shù) } }
在對應(yīng)的登錄頁面中使用Layui框架的表單組件,將用戶名、密碼和記住我選項組織成一個表單,并向LoginController的登錄請求發(fā)送POST請求。
<!DOCTYPE html> <html> <head> <title>登錄</title> <!-- 引入Layui的相關(guān)資源 --> <link rel="stylesheet" > <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 '該項不能為空'; } } }); // 監(jiān)聽表單提交 form.on('submit(formDemo)', function(data) { // 獲取表單數(shù)據(jù)并提交 var username = data.field.username; var password = data.field.password; var rememberMe = data.field.rememberMe === 'on'; // 發(fā)送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('服務(wù)器錯誤', {icon: 2}); } }); return false; // 阻止表單提交 }); }); </script> </body> </html>
在上述代碼中,我們使用了Layui的form模塊進(jìn)行表單的驗證和提交。form.verify()函數(shù)用于定義表單字段的驗證規(guī)則,這里只提供了一個required規(guī)則作為示例。
form.on(‘submit(formDemo)’, function(data) {})函數(shù)用于監(jiān)聽表單提交事件,并在提交時使用AJAX發(fā)送登錄請求。提交成功后,根據(jù)服務(wù)器的響應(yīng)進(jìn)行相應(yīng)的處理。
到此這篇關(guān)于SpringBoot + layui 框架實現(xiàn)一周免登陸功能的文章就介紹到這了,更多相關(guān)SpringBoot layui框架免登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java注解(Annotation)的自定義注解入門介紹
要深入學(xué)習(xí)注解,我們就必須能定義自己的注解,并使用注解,在定義自己的注解之前,我們就必須要了解Java為我們提供的元注解和相關(guān)定義注解的語法2013-04-04spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)
這篇文章主要介紹了spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加),方法參數(shù)使用包括在無注解下獲取參數(shù),使用@RequestParam 獲取參數(shù)的方法,每種方法講解的非常詳細(xì),需要的朋友可以參考下2024-01-01Java中用POI實現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel
這篇文章主要介紹了Java中用POI實現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04Java后端請求接收多個對象入?yún)⒌臄?shù)據(jù)方法(推薦)
本文介紹了如何使用SpringBoot框架接收多個對象作為HTTP請求的入?yún)?通過創(chuàng)建數(shù)據(jù)模型、DTO類和Controller,我們可以輕松處理復(fù)雜的請求數(shù)據(jù)2024-11-11Java日常練習(xí)題,每天進(jìn)步一點點(47)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-08-08