アングル5でSPAを構築しており、認証と認可サービスを呼び出しています。 このサービスはセッションがアクティブかどうかをチェックし、セッションがない場合、または有効期限が切れている場合は401 と全社ログインページのHTMLを返します。 私はこのように、この呼び出しを行うためのサービスを構築しました:あなたが見ることができるように、私はサービスを呼んでいる角度5で動的に生成されたhtmlへのリダイレクト
@Injectable()
export class AuthService {
private authServicePath = '/<path-to-the-service>';
private authToken: string;
private serviceURL: string;
private requestOptions: any;
constructor(private http: HttpClient, private cookieService: CookieService) { }
validateAuth() {
this.serviceURL = environment.endpoint + this.authServicePath;
this.authToken = this.cookieService.get('SESSION-TOKEN-COOKIE');
this.requestOptions = {
headers: new HttpHeaders(
{
'SESSION-TOKEN-COOKIE': this.authToken
}
)
};
return this
.http
.get(this.serviceURL, this.requestOptions)
.subscribe(
data => {
// Do nothing
},
(err: HttpErrorResponse) => {
/*window.document.write = err.error;
window.document.close();*/
}
);
}
}
。トークンが有効な場合は何もする必要はありませんが、アクティブ/有効セッションがない場合、サービスは401 Unauthorizedを返し、ペイロードには
のようなものが表示されます(.error
フィールド)。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<form action="..." ...
私は、この生成されたページに私をリダイレクトするようにアプリに指示するにはどうすればよいですか?
ご覧のとおり、window.document.write
で新しいHTMLを書き込もうとしましたが、動作しませんでした。 角度ルータはアプリに属するコンポーネントにのみリダイレクトできることを理解しています。
ありがとうございます。
あなたはhtmlファイル全体を扱わなければならないので、もっと良い方法を考えることはできません。私はあなたの予約に同意します - しかし、それは動作します... – Steveland83