当用户未登录的时候有许多操作是无法正常进行的,如:发布文章、查看个人主页等,这些操作需要获取当前用户的 id 等信息。

因此我们需要将未登录的用户通过拦截器拦截下来,不让她们进行这些操作。

通过重写 HandlerInterceptor 接口 中的 preHandle 方法 构建拦截器

我们这里实现一个以 session 中有无 userinfo 作为是否拦截的条件。我们在登陆时,一般会将 用户信息存储在 session 中方便使用。已登录,session 中就会有 userinfo,否则意味着当前为未登录状态。若为未登录状态,则让请求转化到 login.html 登录页面,登陆成功后刷新页面即可

@Component
public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// session 得到用户信息// 得到 userinfo 返回 true 已登录// 未得到 userinfo 返回 false 未登陆HttpSession session = request.getSession(false);if (session != null &&session.getAttribute(ConstantVariable.SESSION_USERINFO_KEY) != null) {return true;}// 未登录request.getRequestDispatcher("/login.html").forward(request, response);return false;}
}

重写 WebMvcConfigurer 中的 addInterceptors 将拦截器注册到项目中

@Configuration
public class ApplicationConfigure implements WebMvcConfigurer {// 不拦截的 urlList<String> excludes = new ArrayList<String>() {{add("/favicon.ico");add("/image/**");add("/editor.md/**");add("/**/*.js");add("/**/*.css");add("/login.html");add("/register.html");add("/index.html");add("/userinfo/login");add("/userinfo/register");add("/userinfo/activate");}};@Autowiredprivate LoginInterceptor loginInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {InterceptorRegistration registration = registry.addInterceptor(loginInterceptor);// 拦截的路径registration.addPathPatterns("/**");// 放行的路径registration.excludePathPatterns(excludes);}
}

【SpringSSM项目】搏击俱乐部 拦截未登录的用户相关推荐

  1. 后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)

    后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户) 一.总结 一句话总结: 1.中间件中验证用户是否登录:if(!Auth::guard('admin')->c ...

  2. struts2拦截器--拦截未登录用户

    拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重 ...

  3. shiro 同时实现url和按钮的拦截_Shiro是如何拦截未登录请求的(一)

    问题描述 之前在公司搭项目平台的时候权限框架采用的是shiro,由于系统主要面向的是APP端的用户,PC端仅仅是公司内部人员在使用,而且考虑到系统的可用性和扩展性,服务端首先基于shiro做了一些改造 ...

  4. Spring Filter过滤器,Spring拦截未登录用户权限限制

    实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面. 比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权 ...

  5. SpringBoot——使用拦截器拦截未登录用户

    前置知识SpringBoot配置拦截器基于HandlerInterceptor接口实现,关键三个方法 preHandle()执行目标之前 postHandle()执行目标之后 afterComplet ...

  6. 小项目2——(未登录)指定微博账号基本公开信息的搜集

    1.基本情况介绍 平台:PyCharm + Python3.9 + Windows 需求:未登录状态下对指定微博账号基本公开信息的搜集于存储 功能: 1.根据账号昵称返回用户uid: 2.获取账号基本 ...

  7. 让未登录的用户跳转到登录页

    开发使用的是SpringBoot和Shiro,然后遇到了这个问题,记录一哈. 1.处理ajax异步请求: 如果不想每个ajax都判断返回数据,然后进行未登录跳转的话,可以修改JQuery的默认设置(c ...

  8. uni-app拦截未登录状态,返回到登录

    1. main中判断用户是否有token Vue.prototype.checkLogin = function(){const token = uni.getStorageSync('token') ...

  9. Vue/vant——未登陆时清空购物车以及拦截未登录的状态拒绝进入购物车页面

    cart.js // 清空购物车clearCart(state){state.list = [],state.selectAll = []} axios.js "use strict&quo ...

最新文章

  1. Flash气泡回弹效果
  2. 文件服务器的内存要多少,文件服务器内存要多大
  3. 切换JAVAC的方法
  4. 扩展存储过程在哪里_北京延庆工业废水处理哪里有
  5. c语言中说取消标识符是,2019年全国计算机二级C语言考试考点解析(3)
  6. 前端学习(2588):前端权限的控制思路
  7. Office2010-2016官方镜像大全
  8. JavaScript 编程精解 中文第三版 十三、浏览器中的 JavaScript
  9. 从C语言到C++的进阶之C++的非类新特性(篇二)
  10. 《UNIX/Linux网络日志分析与流量监控》实验环境下载
  11. 我用微笑剪辑我的微电影 ---六月实习总结
  12. WinInet 错误代码 (12001 - 12156 )
  13. android mysql客户端_一款基于Android手机的MySQL客户端的设计与实现
  14. android 缓存用什么地方,哔哩哔哩缓存在哪里 哔哩哔哩缓存文件夹位置
  15. freyja 可能会加入分库、分表功能
  16. 正交矩阵和旋转矩阵之间关系和性质总结
  17. 大数据笔记(三):HDFS集群搭建-伪分布式模式
  18. Spring初窥门径
  19. 渲染(render)和着色(shading)
  20. 证书Certificate以及android打包签名

热门文章

  1. 心情不好就狂吃?好心情心理:这是病,得治!
  2. c语言贪吃蛇显示边框,c语言写的贪吃蛇程序,VC++6.0,控制台字符显示
  3. 2.3 保存备份当前文档 [Illustrator CC教程]
  4. android webview m3u8,M3U8视频,在系统自带浏览器可以播放,但是在uni-app打开同样的网页就无法播放...
  5. (成功解决)ros的rvize使用oint_state_publisher报错:[joint_state_publisher_gui-5] process has died
  6. Python的argv怎么使用(Python参数、解包和变量)
  7. hadoop启动页面_hadoop的web管理界面打不开
  8. 使用 Spring 构建 REST 服务
  9. php mailto,PHP将电子邮件地址转换成mailto:链接形式,防止采集
  10. windows store安装软件点击install(安装)没有反应