3

我正在使用带有角度应用程序的 Spring Boot 微服务。我使用 UAA 作为授权服务器。如果会话过期意味着应用程序应在弹出窗口中显示消息并应重定向到登录页面。如何以角度实现这一目标?

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

谢谢并恭祝安康

希尔帕·库尔卡尼

4

2 回答 2

1

您可以使用角度http-interceptor拦截您的所有请求。当您的令牌或会话过期时,http 响应将是401(unauthorized)。基于此,您可以将用户重定向到登录路由。请参阅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
        }
      }
    });
  }
}

希望这可以帮助。

于 2018-05-09T05:10:29.230 回答
-2

您需要检查HTTP请求,例如,如果会话(令牌)过期并且用户试图从客户端进行一些 HTTP 调用,那么服务器必须返回一些相关的状态代码,比如说它是 401。

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

于 2018-05-09T05:09:41.717 回答