当我们直接在浏览器输入某些URL时,比如我的账号,如果用户没有登录,应该直接跳转至登录页面,登录成功后进入我的账号页面;如果用户已经登录的情况下,点击我的账号,直接进入我的账号页面。这种情况我们可以使用Interceptor来实现,下面是Spring Boot中Interceptor的案例。
- 新建Spring Boot项目,dependency spring-boot-starter-web
- 实现我的账号功能页面
- 新建类RequiredHardLoginInterceptor,代码如下:
package com.oneonone.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.oneonone.entities.Customer;
public class RequiredHardLoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// TODO Auto-generated method stub
Customer customer = (Customer)request.getSession().getAttribute("user");
if(customer != null) {//已经登陆
return true;
}
//没有登陆,转到登陆页面
String url = request.getRequestURI();
response.sendRedirect("/login?next=".concat(url));
return false;
}
}
- 新建配置类InterceptorsConfig,代码如下:
package com.oneonone.commons;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.oneonone.interceptors.RequiredHardLoginInterceptor;
@Configuration
public class InterceptorsConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new RequiredHardLoginInterceptor())
.addPathPatterns("/account/**").addPathPatterns("/checkout/**");
}
}
推荐视频
玩转Spring Data JPA&Spring Data JDBC
推荐文章
系统上线后雪崩!让我们来学习 Spring Cloud Hystrix 及监控来解决雪崩问题
10 分钟教会你 Spring Boot 集成 Thymeleaf、MyBatis 完成产品的增删改查