[项目实战(一)]
[项目实战(二)]
[项目实践(三)]
[项目实践(四)]
[项目实践(六)]
[项目实践(七)]
[项目实践(八)]
[项目实践(九)]
一、新建登录拦截器
LoginHandlerIntercepter.java
package com.xuyuan.springboot03web.config;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
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 {
//获取登录用户的session
Object loginUser = request.getSession().getAttribute("loginUser");
if(loginUser==null){
//session不存在,即用户尚未登录
request.setAttribute("msg","没有权限不行登录");
//返回首页 request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else{
return true;
}
}
}
二、在MVC配置类中添加登录拦截器
MyMvcConfig.java
package com.xuyuan.springboot03web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/main.html").setViewName("dashboard.html");
}
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new loginHandlerInterceptor()).addPathPatterns("/**").
excludePathPatterns("/index.html","/","/user/login","/static/**");
}
}
三、修改登录控制器:添加session来保证拦截器正常运行
LoginController.java
package com.xuyuan.springboot03web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpSession;
@Controller
public class LoginController {
@RequestMapping("/user/login")
public String login(@RequestParam("username")String username,
@RequestParam("password")String password, Model model, HttpSession session){
session.setAttribute("loginUser",username);
//用户名不为空且密码正确 注意这里的数据是默认密码为123456,便于调试
if(!StringUtils.isEmpty(username) && "123456".equals(password)){
session.setAttribute("loginUser",username);
return "redirect:/main.html";
}else {
//用户名或密码错误
model.addAttribute("msg","用户名或密码错误");
return "index";
}
}
}
启动项目后,在浏览器中输入
localhost:8080/main.html
便会转入到首页(index.html),并且提示用户尚未登录。