登錄成功後7天無操做需再次登錄

實現這種功能方法有不少,先後端均可以實現。本文將從後端(java)實現此功能。大概思路以下:java

  1. 登錄成功後,將當前系統時間+7天timeMillisDB(單位:毫秒)存到DB
  2. 在訪問每一個接口前校驗登錄是否過時(使用攔截器進行統一校驗)。校驗規則:當前系統時間currentTimeMillis-timeMillisDB > 0 ,則過時,返回登陸頁;不然,更新系統過時時間(當前系統時間+7天timeMillisDB)
若是考慮到性能可將過時時間存至Redis,並且實現起來較簡單。

攔截器注入service爲空,可進行攔截器配置:spring

//spring boot 攔截器配置
@Configuration
public class ServletContextConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor())
                .excludePathPatterns("/error", "/test/error") // 排除攔截
                .addPathPatterns("/**"); //對全路徑請求進行攔截
        super.addInterceptors(registry);
    }

    // 處理業務的類
    @Bean
    public LoginInterceptor loginInterceptor(){
        return new LoginInterceptor();
    }

}

public class LoginInterceptor implements HandlerInterceptor {
    private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);

    @Autowired
    private XXXService xxxService;// 此時Service會注入成功

    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        // 業務處理
        return true;
    }
複製代碼
相關文章
相關標籤/搜索