index.html (登錄頁)
<form class="form-signin" th:action="@{/user/login}" method="post">
controller
package com.zoe.customer.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpSession;
@Controller
public class loginController {
@PostMapping("/user/login")
public String test4(String name, String password, Model model, HttpSession httpSession) {
if (name.equals("admin") && password.equals("123")) {
httpSession.setAttribute("session",name);
return "redirect:/main";
}else {
model.addAttribute("msg","賬號(hào)密碼錯(cuò)誤");
return "index";
}
}
}
登錄成功 session會(huì)存儲(chǔ)一個(gè)string
登錄失敗 沒有session存儲(chǔ)任何東西
那么對(duì)鏈接進(jìn)行攔截,來查看時(shí)候存有session
有就放行
沒有就跳到首頁
攔截器
package com.zoe.customer.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object name = request.getSession().getAttribute("session");
if (name == null) {
System.out.println("未登錄");
request.getRequestDispatcher("/").forward(request,response);
return false; //false 不放行
}else {
System.out.println("已登錄"+name);
return true; // true 放行
}
}
}
配置類 對(duì)靜態(tài)類文件進(jìn)行放行
package com.zoe.customer.configuration;
import com.zoe.customer.interceptor.LoginHandlerInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
@Configuration
public class MyConfiguration implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("main").setViewName("dashboard");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/","/user/login","/static/**");
}
}