杨校老师课堂之SpringBoot整合Thymeleaf-登录拦截器

简介: 杨校老师课堂之SpringBoot整合Thymeleaf-登录拦截器

image.png


@Controller
@RequestMapping("index")
public class IndexController {

    /**
     * 去后台首页
     * @param request
     * @return
     */
    @RequestMapping("")
    public  String  toIndex(HttpServletRequest request){
        return "index";
    }
}
/**
 *登录拦截器
 */
public class LoginInterceptor implements HandlerInterceptor{
    
    @Override
    public boolean preHandler(HttpServletRequest request,HttpServletResponse response,Object handler)
          throws Exception{
        
        Logger log = LoggerFactory.getLogger(LoginInterceptor.class);
        
        //1. 获取请求地址
        String uri = request.getRequestUri("adminlogin");
        
        // 2. 该地址若存在 则放行
        if(uri.indexOf("adminlogin") >= 0 || uri.indexOf("login") >= 0){
            retrun true;
        }
        
        // 3. 获取会话对象session
        HttpSession session = request.getSession();
        
        // 4.通过会话对象session获取标记ADMIN
        User user = (User)session.setAttribute("ADMIN");
        
        // 5. 通过ADMIN获取到的User对象、进行判断是否存在
        if(user != null){
            //表示已登录、不再拦截
            log.info("表示已登录、不再拦截");
            return true;
        }
        
        // 6. 已拦截
        request.setAttribute("msg","尚未进行登录");
        log.info("表示未登录、已拦截");
        response.sendRedirect(request.getConetxtPath + "/adminlogin");
        return false;
    }
}

配置:
@Configuration
public class LoginConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        InterceptorRegistration registration = registry.addInterceptor(new LoginInterceptor());
//  拦截路径: 项目下所有拦截
registration.addPathPatterns("/**");
//  不拦截路径: 
registration.excludePathPatterns("/login,/**/*.html","/**/*.css","/**/*.png","/**/*.js","/**/*.jpg");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("index.html").setViewName("index");
    }
}

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>LOGIN</title>
    <link rel="stylesheet" th:href="@{/static/component/style/components.css}" href="../static/component/style/components.css">
    <link rel="stylesheet" th:href="@{/static/css/bootstrap.css}" href="../static/css/bootstrap.css">
    <link rel="stylesheet" th:href="@{/static/css/plugins.css}" href="../static/css/plugins.css">
    <link rel="stylesheet" th:href="@{/static/css/main.css}" href="../static/css/main.css">
    <link rel="stylesheet" th:href="@{/static/css/themes.css}" href="../static/css/themes.css">
    <script th:src="@{/static/component/js/JQuery2.1.4.js}"></script>
    <script th:src="@{/static/component/plugins/layer/layer.js}"></script>
</head>
  <body>
      <div id="login">
          <form action="/login" method="post">
          <div class="center">
              <dl>
                  <dt><i class="gi gi-leaf"></i>Lover's · <span> BookHouse</span></dt>
                  <dd><span><i class="fa fa-fw fa-user"></i></span><input type="text" name="usercode" placeholder="请输入账号"></dd>
                  <dd><span><i class="fa fa-fw fa-lock"></i></span><input type="password" name="password" placeholder="请输入密码"></dd>
                  <dd><button type="submit">登录</button></dd>
              </dl>
          </div>
       </form>
      </div>
  </body>
</html>
目录
相关文章
|
1月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
121 0
|
1月前
|
小程序 安全 Java
|
1月前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
1月前
|
JSON 安全 Java
|
3月前
|
存储 NoSQL Java
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
大事件后端项目34_登录优化----redis_SpringBoot集成redis
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的课堂考勤微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课堂考勤微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
3月前
|
前端开发 NoSQL Java
杨校老师课堂之基于SpringBoot + Vue3 的充电桩管理平台设计
杨校老师课堂之基于SpringBoot + Vue3 的充电桩管理平台设计
28 0
|
3月前
|
安全 前端开发 Java
杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
37 0
|
3月前
|
监控 JavaScript 安全
杨校老师课堂之基于SpringBoot + Vue 的智能停车场平台设计
杨校老师课堂之基于SpringBoot + Vue 的智能停车场平台设计
30 0
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线课堂微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线课堂微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)