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. 1.Windows服务-->添加一个简单的服务

    Windows服务应用程序是一种需要长期运行的应用程序,它对于服务器环境特别适合.它没有用户界面,并且也不会产生任何可视输出.任何用户消息都会被 写进Windows事件日志.计算机启动时,服务会自动开 ...

  2. 利用canvas制作图片(可缩放和平移)+相框+文字

    前言: 公司一个售前问我能不能用H5做一个手机拍照,给相片添加相框和添加文字上传到服务器的功能,我当时一琢磨觉得可行,就利用空余时间做了一个demo,去掉了拍照和上传,如果以后有机会,会给补上,当然对 ...

  3. Browser对象之Window对象

    对象属性 对象方法 setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInte ...

  4. 流畅的python和cookbook学习笔记(六)

    1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, ...

  5. No.4一步步学习vuejs之表单输入绑定

    基础用法 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件以 ...

  6. 基于easyUI实现权限管理系统(一)一—组织结构树图形

    此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. 相关文件介绍 1. organize.jsp:组织结构树的主界面 <!DOCTYPE html PUBLIC &quo ...

  7. poj 3260 最少硬币(01+多重+完全背包)

    http://www.cnblogs.com/ACMan/archive/2012/08/14/2637437.html #include <iostream> #include < ...

  8. Django Cookie于Session

    一.Cookie与Session由来 因为Http协议的特性,每一次来自用户浏览器的请求都是无状态且独立的,通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用 ...

  9. Grunt实例

    module.exports = function(grunt) { // 项目配置 grunt.initConfig({ pkg: grunt.file.readJSON('package.json ...

  10. Makefile一 头文件及库搜索路径

    头文件及库搜索路径 头文件的搜索路径: 头文件的搜索规则是:找到就使用,停止继续往下寻找 1: #include “mytest.h” 搜索的顺序为: (1)先搜索当前目录 (2)然后搜索编译时 -I ...