如何以角度处理会话到期?

时间:2018-05-09 05:04:15

标签: spring angular spring-security cloudfoundry-uaa

我正在使用角度应用的spring boot微服务。我正在使用UAA作为授权服务器。如果会话过期意味着应用程序应该弹出消息并重定向到登录页面。如何以角度实现这一点?

任何人都能提供解决方案吗?

谢谢和问候

Shilpa Kulkarni

2 个答案:

答案 0 :(得分:0)

您需要检查HTTP个请求,例如,如果会话(令牌)过期,并且用户尝试从客户端点击某些HTTP调用,那么服务器必须返回一些相关的状态代码让我们说它是401.

因此,在这种情况下,您将检查服务器是否正在使用状态代码401进行响应,然后显示弹出窗口并重定向到log in屏幕。

答案 1 :(得分:0)

您可以使用有角度的 http-interceptor 拦截您的所有请求。当您的令牌或会话过期时,http响应将为 401(未经授权)。基于此,您可以将用户重定向到登录路由。 请参阅HttpInterceptor的文档。

像这样。

export class YourInterceptor implements HttpInterceptor {
  constructor() {}
  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(request).do((event: HttpEvent<any>) => {
      if (event instanceof HttpResponse) {
        // do stuff with response if you want
      }
    }, (err: any) => {
      if (err instanceof HttpErrorResponse) {
        if (err.status === 401) {
          // redirect to the login route
          // or show a modal
        }
      }
    });
  }
}

希望这有帮助。