Spring拦截器
一,创建拦截器
创建一个拦截器类AdminLoginInterceptor实现HandlerInterceptor接口,重写preHandle方法等。
package com.lmc.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* @Author lmc
* @Description 管理员登录拦截器
* @Date: Create in 15:05 2019/9/4
*/
@Component("adminLoginInterceptor")
public class AdminLoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//获取本次会话的session
HttpSession session = request.getSession();
//获取登录时存放在session的账号名
String aname = (String) session.getAttribute("aname");
//若账号名为空,则进行拦截
if (aname != null && !"".equals(aname.trim()))
return true;
response.sendRedirect(request.getContextPath() + "/admin/admin/login.html");
return false;
}
}
- 返回true则证明验证成功,通过
- 返回false则证明验证失败,进行拦截
二,注册拦截器
创建一个类InterceptorConfigurer作为配置类,实现WebMvcConfigurer接口,重写addInterceptors()方法
package com.lmc.config;
import com.lmc.interceptor.AdminLoginInterceptor;
import com.lmc.interceptor.UserHomeInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Author lmc
* @Description 配置拦截器
* @Date: Create in 15:03 2019/9/4
*/
@Configuration
public class InterceptorConfigurer implements WebMvcConfigurer {
@Autowired
private AdminLoginInterceptor adminLoginInterceptor;
@Autowired
private UserHomeInterceptor userHomeInterceptor;
// 这个方法是用来配置静态资源的,比如html,js,css,等等
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
}
// 这个方法用来注册拦截器,我们自己写好的拦截器需要通过这里添加注册才能生效
@Override
public void addInterceptors(InterceptorRegistry registry) {
// addPathPatterns("/**") 表示拦截所有的请求,
// excludePathPatterns("/login", "/register") 表示除了登陆与注册之外,因为登陆注册不需要登陆也可以访问
registry.addInterceptor(adminLoginInterceptor).
addPathPatterns("/admin/**").
excludePathPatterns("/admin/admin/login.html", "/admin/admin/loginAction.do");
registry.addInterceptor(userHomeInterceptor).addPathPatterns("/user/user/personal.html");
}
}
- addPathPatterns(“/**”) 表示拦截所有的请求
- excludePathPatterns(“/login”, “/register”) 表示除了login与register之外,不需要登陆也可以访问
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81634.html