1、前端页面的设置

index.html

<input type="text" class="form-control" name="username" th:placeholder="#{index_Username}" placeholder="Username" required="" autofocus="">
<label class="sr-only">Password</label>
<input type="password" class="form-control" name="pwd" th:placeholder="#{index_password}" placeholder="Password" required="">

2、新建一个controller

@Controller
public class LoginController {
//@RequestMapping(value = "/user/login",method = RequestMethod.POST)
@PostMapping(value = "/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("pwd") String pwd, Map<Object,String> map){
if (!StringUtils.isEmpty(username) && "".equals(pwd)){
//登录成功
return "dashboard";
}else {
//登录失败
map.put("msg","账户&密码错误!");
return "index";
}
}
}
@RequestMapping(value = "/user/login",method = RequestMethod.POST)
@PostMapping(value = "/user/login")

两个使用的效果是一样的!!!

3、前端页面进行错误提示代码的检验

<p th:text="${msg}" style="color: red" th:if="${not #strings.isEmpty(msg)}"></p>
首先th:if判断是否存在,存在即执行th:text

登陆成功之后有一个弊端,当刷新页面的时候依然执行的时登录时的请求
所以此时可以使用重定向

首先将试图添加到容器中
配置类
@Configuration
public class config {
@Bean
public WebMvcConfigurer webMvcConfigurer(){
return new WebMvcConfigurer(){
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/index").setViewName("index");
registry.addViewController("/success.html").setViewName("dashboard");
}
};
}
//国际化
@Bean()
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}

在进行修改LoginController的方法进行重定向

@PostMapping(value = "/user/login")
public String login(@RequestParam("username") String username,
@RequestParam("pwd") String pwd, Map<Object,String> map){
if (!StringUtils.isEmpty(username) && "".equals(pwd)){
//登录成功
return "redirect:/success.html";
}else {
//登录失败
map.put("msg","账户&密码错误!");
return "index";
} }

关于登陆拦截

这个url在其他的浏览器可以跳过登录,此时需要使用到登陆的拦截器
 
拦截器的 的实现和springmvc的实现基本一样
 
拦截类:
LoginHandlerInterceptor实现 HandlerInterceptor 接口的方法进行拦截
public class LoginHandlerInterceptor implements HandlerInterceptor {
//目标方法执行之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute("user");
if (user == null){
//未登录
//返回到登录页面
request.getRequestDispatcher(request.getContextPath() + "/user/login").forward(request,response);
//设置提示信息
request.setAttribute("msg","没有权限请先登录~");
return false;
}else {
//已登录
return true;
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { }
}

在spring容器中进行注册

@Bean
public WebMvcConfigurer webMvcConfigurer(){
return new WebMvcConfigurer(){
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/main.html").setViewName("dashboard");
} //注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").
excludePathPatterns("/","/index.html","/user/login");
}
};
}
addPathPatterns:添加拦截的路径    /** 表示都拦截
excludePathPatterns:排除需要拦截的请求,比如访问的首页、登陆按钮的路径.......(根据开发情况)

值得说一下的是,在登陆之后要进行判断以及session的设置

@Controller
public class LoginController {
  //@RequestMapping(value = "/user/login",method = RequestMethod.POST)
  @PostMapping(value = "/user/login")
  public String login(@RequestParam("username") String username,
     @RequestParam("pwd") String pwd, Map<Object,String> map,HttpSession session){
     if (!StringUtils.isEmpty(username) && "12345".equals(pwd)){
       //登录拦截
       session.setAttribute("user",username);
       //登录成功
       return "redirect:/main.html";
     }else {
      //登录失败
      map.put("msg","账户&密码错误!");
      return "index"; }
   }
}

10、SpringBoot-CRUD登陆拦截的更多相关文章

  1. SpringBoot实现登陆拦截

    一.创建interceptor包,在interceptor中创建一个拦截器并实现HandlerInterceptor 代码: @Componentpublic class LoginHandlerIn ...

  2. Springboot + redis + 注解 + 拦截器来实现接口幂等性校验

    Springboot + redis + 注解 + 拦截器来实现接口幂等性校验   1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF ...

  3. 【Java EE 学习 70 上】【数据采集系统第二天】【数据加密处理】【登陆验证】【登陆拦截器】【新建调查】【查询调查】

    一.数据加密处理 这里使用MD5加密处理,使用java中自带加密工具类MessageDigest. 该类有一个方法digest,该方法输入参数是一个字符串返回值是一个长度为16的字节数组.最关键的是需 ...

  4. JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现

    一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implemen ...

  5. 10.spring-boot基于角色的权限管理页面实现

    10.spring-boot基于角色的权限管理页面实现

  6. SpringBoot如何添加拦截器

    在web开发的过程中,为了实现登录权限验证,我们往往需要添加一个拦截器在用户的的请求到达controller层的时候实现登录验证,那么SpringBoot如何添加拦截器呢? 步骤如下: 1.继承Web ...

  7. react-router-dom实现全局路由登陆拦截

    相比与vue的路由集中式管理,能够很好的进行统一的路由操作,react的路由看起来更乱,想要进行像vue的全局路由管理不是那么得心应手.在我们的项目中,有很多页面是需要登陆权限验证的,最好的方式就是能 ...

  8. springboot全局异常拦截源码解读

    在springboot中我们可以通过注解@ControllerAdvice来声明一个异常拦截类,通过@ExceptionHandler获取拦截类抛出来的具体异常类,我们可以通过阅读源码并debug去解 ...

  9. 在springboot中使用拦截器

    在springMVC中可以实现拦截器,是通过实现HandlerInterceptor接口,然后在springmvc-web.xml中配置就可以使用拦截器了.在springboot中拦截器也是一样的思想 ...

随机推荐

  1. [转]微信小程序开发:http请求

    本文转自:http://www.cnblogs.com/dragondean/p/5921079.html 在微信小程序进行网络通信,只能和指定的域名进行通信,微信小程序包括四种类型的网络请求. 普通 ...

  2. 浅谈MES系统SMT的JIT功能(二):JIT流程

    上周说到JIT的原理,今天就说说JIT功能的基本流程:从维护基本信息——>生产人员排程——>仓库人员发料——>生产上料——>JIT物料配送看板拉到仓库人员发第二次料,循环上料发 ...

  3. Struts2 学习(一)

    一.Struts 介绍 1.Struts2的概述 1.早期开发模型Servlet+JSP+JavaBean(Model2)显得力不从心: 流程凌乱.数据传递无序.缺乏辅助功能. 2.MVC模式的轻量级 ...

  4. Linux+Git命令

    Linux 文件与目录 cd命令: $ cd [path] //path为路径名称,这只是常规语法 1 详细用法如下: $ cd /d //进入d盘 $ cd d: //进入d盘 $ cd D: // ...

  5. shell变量类型和运算符

    一.shell变量的应用 1.shell变量的种类 ①用户自定义变量:由用户自己定义,修改和使用 ②预定义变量:bash预定义的特殊变量,不能直接修改 ③位置变量:通过命令行给程序传递执行参数 二.变 ...

  6. animate默认时长所带来的问题及解决

    一.需求描述 做一个进度条长度逐渐减少的动画,当进度条长度小于等于0时,关闭动画,并弹出透明底板显示新提示. 二.问题描述 初始代码如下: //设置进度条初始长度 var progressLength ...

  7. org.apache.ibatis.binding.BindingException

    1.异常提示: org.apache.ibatis.binding.BindingException: Mapper method 'com.artup.dao.WorksDao.selectWork ...

  8. Java 使用Log4J进行日志操作

    使用Log4J进行日志操作   Log4J简介   Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT ...

  9. strcmp和stricmp、strcmpi三者之间的区别(C++)

    原文:http://www.cnblogs.com/tankeee/p/3957629.html #include <string.h> #include <stdio.h> ...

  10. Redhat Linux 7.3 虚拟机通过USB挂载NTFS格式的移动硬盘

    分为如下几个步骤: 一.设置本地yum,安装gcc(如果本机已经安装gcc,则跳过此步) 在虚拟机连接linux iso安装盘 查看光盘挂载情况 mkdir /iso mount /dev/cdrom ...