From c048cc235843c7fc281193d700412fd42e748fed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=E5=98=89=E9=98=B3?= Date: Mon, 5 Feb 2018 20:14:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=99=BB=E5=BD=95=E6=8B=A6?= =?UTF-8?q?=E6=88=AA=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fjy/spring/constant/GlobalConstant.java | 5 +++ .../spring/controller/LoginController.java | 18 ++++++++-- .../fjy/spring/controller/NavController.java | 5 +++ .../spring/interceptor/LoginInterceptor.java | 31 +++++++++++++++++ .../fjy/spring/interceptor/WebAppConfig.java | 33 +++++++++++++++++++ .../com/fjy/spring/service/UserService.java | 7 ++-- src/main/resources/templates/home/home.html | 4 +-- 7 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/fjy/spring/constant/GlobalConstant.java create mode 100644 src/main/java/com/fjy/spring/interceptor/LoginInterceptor.java create mode 100644 src/main/java/com/fjy/spring/interceptor/WebAppConfig.java diff --git a/src/main/java/com/fjy/spring/constant/GlobalConstant.java b/src/main/java/com/fjy/spring/constant/GlobalConstant.java new file mode 100644 index 0000000..04f870a --- /dev/null +++ b/src/main/java/com/fjy/spring/constant/GlobalConstant.java @@ -0,0 +1,5 @@ +package com.fjy.spring.constant; + +public class GlobalConstant { + public static final String USER_SESSION_KEY = "USER_SESSION"; +} diff --git a/src/main/java/com/fjy/spring/controller/LoginController.java b/src/main/java/com/fjy/spring/controller/LoginController.java index 95bc600..798c636 100644 --- a/src/main/java/com/fjy/spring/controller/LoginController.java +++ b/src/main/java/com/fjy/spring/controller/LoginController.java @@ -1,22 +1,36 @@ package com.fjy.spring.controller; import com.fjy.spring.domain.TbUser; +import com.fjy.spring.properties.ServerProperties; import com.fjy.spring.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import static com.fjy.spring.constant.GlobalConstant.USER_SESSION_KEY; + @Controller public class LoginController { + @Autowired + private ServerProperties serverProperties; @Autowired private UserService userService; + @Resource + HttpServletRequest request; + @PostMapping("/login/dologin") public String doLogin(TbUser tbUser)throws Exception{ - if (userService.doLoginService(tbUser.getColname(),tbUser.getColpassword())){ - return "/home/home"; + TbUser user = userService.doLoginService(tbUser.getColname(),tbUser.getColpassword()); + if (user!=null){ + request.getSession().setAttribute(USER_SESSION_KEY,user); + return "redirect:" + request.getScheme() + "://" + request.getServerName() + ":" + + serverProperties.getPortNum() + request.getContextPath() + "/home"; } return "login"; } diff --git a/src/main/java/com/fjy/spring/controller/NavController.java b/src/main/java/com/fjy/spring/controller/NavController.java index 9a37b36..107dc65 100644 --- a/src/main/java/com/fjy/spring/controller/NavController.java +++ b/src/main/java/com/fjy/spring/controller/NavController.java @@ -19,4 +19,9 @@ public class NavController { public String toTestAxiosPage(){ return "/dist/axiosTest"; } + + @GetMapping(value = {"/home"}) + public String toHomePage(){ + return "/home/home"; + } } diff --git a/src/main/java/com/fjy/spring/interceptor/LoginInterceptor.java b/src/main/java/com/fjy/spring/interceptor/LoginInterceptor.java new file mode 100644 index 0000000..c1f59ad --- /dev/null +++ b/src/main/java/com/fjy/spring/interceptor/LoginInterceptor.java @@ -0,0 +1,31 @@ +package com.fjy.spring.interceptor; + +import com.fjy.spring.constant.GlobalConstant; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class LoginInterceptor implements HandlerInterceptor { + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + System.out.println("preHandle"); + Object user = request.getSession().getAttribute(GlobalConstant.USER_SESSION_KEY); + if (user==null){ + response.sendRedirect("/cms/index"); + return false; + } + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + System.out.println("postHandle"); + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + System.out.println("afterCompletion"); + } +} diff --git a/src/main/java/com/fjy/spring/interceptor/WebAppConfig.java b/src/main/java/com/fjy/spring/interceptor/WebAppConfig.java new file mode 100644 index 0000000..5f02093 --- /dev/null +++ b/src/main/java/com/fjy/spring/interceptor/WebAppConfig.java @@ -0,0 +1,33 @@ +package com.fjy.spring.interceptor; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class WebAppConfig implements WebMvcConfigurer { + + /** + * 注册拦截器 + * @param registry + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/home/**"); + } + + /** + * 排除静态资源 + * @param registry + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/cms/js/**").addResourceLocations("classpath:/js/"); + registry.addResourceHandler("/cms/css/**").addResourceLocations("classpath:/css/"); + registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/"); + registry.addResourceHandler("/cms/fonts/**").addResourceLocations("classpath:/fonts/"); + registry.addResourceHandler("/cms/images/**").addResourceLocations("classpath:/images/"); + } +} diff --git a/src/main/java/com/fjy/spring/service/UserService.java b/src/main/java/com/fjy/spring/service/UserService.java index 5f482af..b789b5a 100644 --- a/src/main/java/com/fjy/spring/service/UserService.java +++ b/src/main/java/com/fjy/spring/service/UserService.java @@ -15,11 +15,11 @@ public class UserService { private TbUserRepository tbUserRepository; - public boolean doLoginService(String name,String password){ + public TbUser doLoginService(String name,String password){ TbUser user = (TbUser)tbUserRepository.findByColname(name).get(); if (user!=null){ if (password.equals(user.getColpassword())){ - return true; + return user; }else { throw new UserException(ResultEnum.WRONGPASS); } @@ -32,7 +32,8 @@ public class UserService { TbUser user = tbUserRepository.save(tbUser); if (user!=null){ - throw new UserException(ResultEnum.SUCCESS); + //throw new UserException(ResultEnum.SUCCESS); + return true; } return false; } diff --git a/src/main/resources/templates/home/home.html b/src/main/resources/templates/home/home.html index ec6317a..418457b 100644 --- a/src/main/resources/templates/home/home.html +++ b/src/main/resources/templates/home/home.html @@ -56,7 +56,7 @@ - - + + \ No newline at end of file