10.1更 spring boot 登录拦截(附上代码)
来源:互联网 发布:苹果电脑视频制作软件 编辑:程序博客网 时间:2024/06/05 21:06
声明:
自己对拦截器的理解目前仅处于会用的阶段,没有太多理解,这里仅提供代码,有需要的先拿去用。更多分解等日后再说。
10.1更新:
spring boot设置拦截器总共就两步:
- 设置自己的拦截规则。即继承HandlerInterceptor,不用把它注册为bean,因为拦截器只能在拦截器链中。这就要用第二步。
- 把拦截器添加到拦截器链中。 继承WebMvcConfigurerAdapter。并添加@Configuration注解
目录结构
AuthorizationInterceptor类
//你的拦截规则就要写在这里package com.qingyunqifu.interceptor;import com.qingyunqifu.domain.Users;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AuthorityIntercptor implements HandlerInterceptor{ //不拦截xxx请求 private static final String[] IGNORE_URL = {"/loginForm", "/login"}; /* * 本方法在进行处理器拦截用的,该方法在COntroller处理之前进行调用 * 本方法返回值为ture,拦截器才会继续往下执行,该方法返回false时,整个请求就代表结束了。 * */ @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { System.out.println("在请求处理来之前,也就是在controller函数调用之前"); System.out.println("普通拦截器正在保护您的安全"); //flag 登录标志 boolean flag = false; //获取请求路径进行判断 String servletPath = httpServletRequest.getServletPath(); for (String s : IGNORE_URL) { if (servletPath.contains(s)) { flag = true; break; } } //拦截请求 if (!flag) { //获取session中的user Users user = (Users) httpServletRequest.getSession().getAttribute("user"); if (user == null) { System.out.println("你好坏,快去登录"); httpServletRequest.setAttribute("message", "请先登录再来"); httpServletRequest.getRequestDispatcher("login").forward(httpServletRequest, httpServletResponse); }else { System.out.println("放行!!!"); flag = true; } } return flag; } @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("在请求处理后,但在试图渲染之前调用"); } @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("渲染结束后再调用"); }}
WebConfig类
package com.qingyunqifu.interceptor;import org.apache.catalina.filters.RemoteIpFilter;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;@Configurationpublic class WebConfig extends WebMvcConfigurerAdapter { @Bean public RemoteIpFilter remoteIpFilter() { return new RemoteIpFilter(); } @Bean public LocaleChangeInterceptor localeChangeInterceptor() { return new LocaleChangeInterceptor(); } public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new AuthorityIntercptor()).addPathPatterns("/**"); super.addInterceptors(registry); }}
番外:
附上github地址:https://github.com/1500256797/springboot-demo
更多关于拦截器的用法,以后有机会再补充进来。
阅读全文
0 0
- 10.1更 spring boot 登录拦截(附上代码)
- Spring boot之登录拦截器
- Spring Boot 拦截器之验证登录
- Interceptor登录拦截(Spring拦截器)
- spring boot LoginInterceptor(登录拦截器)无法注入bean
- Spring Boot拦截器(WebMvcConfigurerAdapter)
- Spring boot配置拦截器(十四)
- Spring Boot 拦截器
- Spring Boot 拦截器
- Spring Boot 拦截器
- Spring Boot 拦截器
- Spring Boot 拦截器
- Spring Boot 拦截器
- Spring-Boot拦截器
- spring boot 拦截器
- Spring Boot拦截器
- spring boot 拦截器
- Spring Boot 拦截器
- Kotlin-Android世界的一股清流-Lambda表达式
- 74HC164驱动程序
- Node.js+Express+MongoDB 建站实例
- jQuery对象与dom对象的相互转换
- 常用软件
- 10.1更 spring boot 登录拦截(附上代码)
- 编写程序,打印出N阶魔阵(N个奇数)
- 关于MyBatis中的@param的讲解
- Java基础小知识(一)
- HDU 5978 To begin or not to begin(概率)
- (二十一)Animator 实例 —— 刷鲜花效果
- 第四周--3(3)
- 构建乘积数组
- Anaconda环境配置