springboot登录拦截器 + 展示员工列表

登录拦截
用判断是否有session存在来做登录拦截,这里我们用 用户名来做session的value吧。
@Controller public class LoginController { @RequestMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("userpassword") String userpassword, Model model, HttpSession session){ if (username.equals("hi") || userpassword.equals("hi")){ session.setAttribute("loginUser",username); return "dashboard"; }else { model.addAttribute("msg","登陆失败"); return "index"; } } }
继承一个拦截controller的接口:HandlerInterceptor
public class LoginSeeion implements HandlerInterceptor { //preHandle方法是进行处理器拦截用的,顾名思义,该方法将在Controller处理之前进行调用。 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //如果拿到了session就证明已经登录过了 final Object loginUser = request.getSession().getAttribute("loginUser"); if (loginUser == null){ request.setAttribute("msg","没有权限,请先登录"); request.getRequestDispatcher("/index.html").forward(request,response);//跳转到前端页面 return false; //不放行 }else { return true; //放行 } } }
别忘了在我们自己写的MyMvcConfig.class类中配置一下controller的拦截器
//自己对mvc的一些配置,虽然springboot帮我们配置了,但是有些我想弄成别的样的所以得自己配一下 @Configuration public class MyMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { //这样的话我在浏览器的地址栏打"/"或者"/index.html"都会跳转到index(首页) 虽然直接写localhost:8080也能自动跳转到首页 registry.addViewController("/").setViewName("index"); registry.addViewController("/index.html").setViewName("index"); } //登录拦截写完了,在这配置一下拦截器 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginSeeion()) .addPathPatterns("/**") .excludePathPatterns("/index.html","/","/user/login","/css/*","/js/**","/img/**"); WebMvcConfigurer.super.addInterceptors(registry); } }
登陆成功,显示session的value
<a class="navbar-brand col-sm-3 col-md-2 mr-0" href="http://getbootstrap.com/docs/4.0/examples/dashboard/#">[[${session.loginUser}]]</a>
展示员工列表
controller
@Controller public class EmployeeController { @RequestMapping("toUserList") public String employeeList(Model model){ List<User> userList = new ArrayList<>(); for (int i = 0; i < 20; i++) { userList.add(new User("user"+i,"pass"+i)); } model.addAttribute("userList",userList); return "list"; } }
list.html
<table class="table table-striped table-sm"> <thead> <tr> <th>用户名</th> <th>密 码</th> <th>操 作</th> </tr> </thead> <tbody> <tr th:each="user:${userList}"> <td th:text="${user.getUsername()}"></td> <td>[[${user.getUserpassword()}]]</td> <td> <button class="btn btn-sm btn-primary">编辑</button> <button class="btn btn-sm btn-danger">删除</button> </td> </tr> </tbody> </table>

浙公网安备 33010602011771号