springboot和ajax实现强制登录
时间: 2024-04-30 20:23:32 浏览: 14
实现强制登录的一般流程如下:
1. 在前端页面中添加一个登录验证的功能,当用户访问需要登录的页面时,前端会发送一个Ajax请求到后端进行验证。
2. 后端接收到请求后,判断用户是否已经登录,如果已经登录,则返回正常的页面内容;如果未登录,则返回一个特定的状态码,告诉前端需要进行登录。
3. 前端接收到后端返回的状态码后,根据状态码进行相应的处理,通常是跳转到登录页面。用户登录成功后,再重新返回需要登录的页面。
下面是一个使用Spring Boot和Ajax实现强制登录的示例代码:
前端页面代码:
```
<!-- 页面内容 -->
<div id="content">
<!-- 需要登录的内容 -->
</div>
<script>
$(function() {
$.ajax({
url: '/checkLogin', // 发送验证登录请求的URL
success: function(data) {
if (data.code == 0) {
// 用户已登录,显示页面内容
$('#content').show();
} else {
// 用户未登录,跳转到登录页面
window.location.href = '/login';
}
}
})
})
</script>
```
后端代码:
```
@RestController
public class LoginController {
@GetMapping("/checkLogin")
public ResponseData checkLogin(HttpServletRequest request) {
// 判断用户是否已登录
if (request.getSession().getAttribute("user") != null) {
return ResponseData.success();
} else {
return ResponseData.fail("需要登录", -1);
}
}
@PostMapping("/login")
public ResponseData login(HttpServletRequest request, String username, String password) {
// 用户登录逻辑
if ("admin".equals(username) && "123456".equals(password)) {
request.getSession().setAttribute("user", username);
return ResponseData.success();
} else {
return ResponseData.fail("用户名或密码错误", -2);
}
}
@GetMapping("/logout")
public ResponseData logout(HttpServletRequest request) {
// 用户退出登录逻辑
request.getSession().removeAttribute("user");
return ResponseData.success();
}
}
```
其中,ResponseData是一个自定义的响应数据类,用于封装返回给前端的数据。
```
public class ResponseData {
private int code;
private String message;
private Object data;
public static ResponseData success() {
return new ResponseData(0, "success", null);
}
public static ResponseData fail(String message, int code) {
return new ResponseData(code, message, null);
}
// 省略getter和setter方法
}
```