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>&nbsp;</th>
                 <th>&nbsp;</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>

 

 

 

posted @ 2021-12-15 13:59  涂妖教  阅读(66)  评论(0)    收藏  举报