• 上一节完成了基本的留言板功能,springboot+mybatis+thymeleaf实现简单的留言板,但是这是任何人都能够进行留言,这里需要修改为只有登录的人才能够留言

加入拦截器

  • 新建登录拦截器LoginInterceptor,每次请求通过cookie进行检测是否存在session,不存在跳转到登录页面,已登录进入到首页
package com.wang.interceptor;import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.thymeleaf.util.StringUtils;import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;@Slf4j
@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//获取cookieCookie[] cookies = request.getCookies();if (null == cookies) {response.sendRedirect(request.getContextPath() + "/login");return false;}String cookie_username = null;for (Cookie item : cookies) {if ("cookie_username".equals(item.getName())) {cookie_username = item.getValue();break;}}log.debug("这是拦截器My preHandle");if (StringUtils.isEmpty(cookie_username)) {response.sendRedirect(request.getContextPath() + "/login");return false;}HttpSession session = request.getSession();Object userSession = session.getAttribute(cookie_username);if (userSession == null){response.sendRedirect(request.getContextPath() + "/login");return false;}System.out.println(userSession);return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {log.debug("这是拦截器My postHandle方法");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {log.debug("这是拦截器My afterCompletion方法");}
}
  • 注册拦截器
package com.wang.config;import com.wang.interceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class MvcConfig implements WebMvcConfigurer {@Autowiredprivate LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {InterceptorRegistration interceptorRegistration = registry.addInterceptor(loginInterceptor);interceptorRegistration.addPathPatterns("/*");interceptorRegistration.excludePathPatterns("/login");}
}
  • 登录请求
package com.wang.controller;import com.wang.pojo.User;
import com.wang.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@Controller
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/login")public String login(Model model) {model.addAttribute("user", new User());return "login";}@PostMapping("/login")public void loginUser(User user, HttpServletResponse response, HttpSession session, HttpServletRequest request) throws IOException {User user1 = userService.queryUserByNameAndPassword(user);if (user1 != null) {session.setAttribute(user1.getUsername(), user1);Cookie cookie_username = new Cookie("cookie_username", user1.getUsername());cookie_username.setMaxAge(60*60);cookie_username.setPath(request.getContextPath());response.addCookie(cookie_username);}response.sendRedirect("/");}}

springboot留言板添加登录功能相关推荐

  1. spring-boot留言板

    spring-boot留言板 概要 目的 1 使用spring boot写个留言板2 熟悉spring boot的基本使用 详情 使用spring-boot 开发项目的前提 1 简单了解java语言 ...

  2. php简易留言板功能,php简单的留言板与回复功能具体实现

    php简单的留言板与回复功能具体实现 留言板是在刚接触php时用来学习的一个简单的应用例子了,今天我再给初学php的朋友提供一个完整的php留言板的全部制作过程,希望对你会有帮助 在网上找了这方面的教 ...

  3. jsp编写程序实现写读留言板内容的功能

    (1)编写程序实现写留言板内容的功能. 编写一个JSP页面writefile.jsp,该页面提供一个表单,用户可以通过表单输入留言标题和内容,提交留言跳转到WriteFileContent.jsp页面 ...

  4. sprongboot mysql登录注册_后端开发:SpringBoot实现注册与登录功能

    这次实现的注册与登录功能需要进行数据库的基本操作,而且是前后端分离式开发.总的来说就是首先进行数据库的设计,然后根据数据库进行编写服务端API接口,接着来到客户端或移动端,进行登录与注册的界面设计,接 ...

  5. 一个初学者的留言板(登录和注册)

    前言:大一新生一个,把学习内容记录一下,若有疑问或者错误可以留言并指出来,我会再看看的.下面是我写的留言板.东西有点多,分3次发完吧. 一.登录 <?php session_start(); ? ...

  6. php+mysql 留言板系统 登录 管理员 审核回复 学生适用

    1.php+mysql留言板系统 2.共有两种使用者:管理员.普通用户 1)普通用户创建留言,无需注册和登录 2)管理员登陆后审核及回复用户留言.批量删除留言:增删改查后台账号信息:修改密码:退出登录 ...

  7. php 审核功能,随缘网络PHP留言板(带审核功能)

    经过一些时间的努力,随缘网络PHP留言板V1.0(带审核功能)总算正式发布了,该留言系统采用PHP+MYSQL编写,界面色调风格延续之前asp版留言系统简洁浅蓝色风格,稍有所变动.希望大家能够喜欢.初 ...

  8. php留言板带审核,随缘网络PHP留言板(带审核功能) v1.0 build 091017

    经过一些时间的努力,随缘网络PHP留言板V1.0(带审核功能)总算正式发布了,该留言系统采用PHP+MYSQL编写,界面色调风格延续之前asp版留言系统简洁浅蓝色风格,稍有所变动.希望大家能够喜欢.初 ...

  9. 随意php开源多功能留言板,随意多功能留言板 SyGuestBook v1.2

    随意多功能留言板 SyGuestBook v1.2 更新日志 版本:涵盖全部版本 问题:解决留言板首页打开慢的问题 原因:用了好几年的新浪IP转换地址的接口失效了,导致网页要请求很久只到失败才能显示( ...

最新文章

  1. 10个例子带你了解机器学习中的线性代数
  2. R语言optimize函数一维优化实战
  3. 聚类的评价方法 轮廓系数
  4. dedecms php5.4 无法退出后台,解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法...
  5. Nginx在windows上安装 及 Nginx的配置及优化
  6. Star: Ubuntu下配置和编译cpp-ethereum客户端启动GPU加速交易
  7. 使用VS2019编写C语言程序,环境安装配置+代码调试
  8. 带缓冲的IO和不带缓冲的IO
  9. 2_1 AdpterMode.cpp 适配器模式
  10. php点击查看更多,微信小程序加载更多和点击查看更多功能介绍
  11. [你必须知道的.NET] 第六回:深入浅出关键字---base和this
  12. 《Python Cookbook 3rd》笔记(1.13):通过某个关键字排序一个字典列表
  13. 布隆过滤器误判_布隆过滤器原理
  14. 哨兵2号波段_分布式框架之高性能:Redis哨兵模式
  15. SEO优化之——html页面相关总结
  16. 两个字符串的最长公共子序列长度_算法学习笔记(58): 最长公共子序列
  17. [转]CellCtrl控件完美破解研究
  18. 怎么借助Camtasia制作回忆录
  19. vim编辑器永久显示行号
  20. Excel 数据透视表入门教程

热门文章

  1. SCI一区论文:基于WiFi信号的病毒存活期内密切接触者追踪
  2. NASM汇编教程翻译07 第七讲 换行符
  3. 雪花算法和uuid比较
  4. 计算机应用程序发生异常,电脑打开网页失败 并弹出应用程序发生异常(0xc06d007e)的解决办法...
  5. 完美域名软件,域名扫描,域名抢注!
  6. 如何使用内存法实现图片的浮雕出来_古玉学步(191):高古浮雕看减地 再识浮雕老工艺...
  7. 爬取豆瓣电影排行榜top250
  8. 金庸群侠传3DUnity重置入门-Mods开发
  9. 怎么恢复 Ubuntu 屏幕翻转后死机
  10. 【JavaWeb】文件的上传和下载