10.1更 spring boot 登录拦截(附上代码)
2017-09-28 19:18
501 查看
声明:
自己对拦截器的理解目前仅处于会用的阶段,没有太多理解,这里仅提供代码,有需要的先拿去用。更多分解等日后再说。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; @Configuration public 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更多关于拦截器的用法,以后有机会再补充进来。
<
4000
/article>
相关文章推荐
- spring boot整合Shiro实现单点登录的示例代码
- springboot+aop,拦截操作日志,登录日志
- spring boot 使用拦截器 实现 用户登录拦截
- 代码学习与实践 (一):Spring Boot 多模块项目创建与配置 注册 登录
- SpringBoot创建JSP登录页面功能实例代码
- Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
- springboot整合shiro登录失败次数限制功能的实现代码
- springboot系列(一):初次使用与登录验证实现
- maven工程使用spring-boot-devtools进行热部署,更改代码避免重启web容器
- spring_boot_pay支付宝,微信,银联支付详细代码案例
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- spring boot项目中使用spring-boot-devtools模块进行代码热部署,避免重新启动web项目
- springboot登录
- Spring Boot使用模板freemarker的示例代码
- SpringBoot项目如何访问jsp页面的示例代码
- [安全] 使用 SpringBoot + SpringSecurity 做登录认证
- SpringBoot返回json和xml的示例代码
- springboot项目,支付宝接口支付代码
- Spring Boot与React集成的示例代码
- SpringBoot学习:整合shiro(验证码功能和登录次数限制功能)