我的Angular SPA應用程序由需要基本身份驗證的Apache服務器提供。 該應用程序還需要使用需要基本身份驗證(相同憑據)的REST API從Apache服務器獲取基本認證憑證,以嵌入到Angular SPA中?
因此,當用戶第一次導航到頁面時,他必須在服務器甚至會發送Angular應用程序之前提供其憑據。但是,一旦用戶獲得應用程序,應用程序就不知道用什麼憑證來訪問REST API。我必須向用戶展示第二個登錄頁面,以便應用程序可以將身份驗證憑據存儲在cookie或localStorage中。
有沒有什麼辦法讓服務器用Angular SPA「嵌入」用戶的$ _SERVER ['PHP_AUTH_USER']和$ _SERVER ['PHP_AUTH_PASSWORD'],這樣用戶不必登錄兩次?
例如像:
- 用戶導航到index.php包裝
- PHP包裝酷似index.html的,除了它也存儲PHP_AUTH憑據localStorage的
<body>
<script>
localStorage.setItem("auth_token", "<?php base64_encode($_SERVER['PHP_AUTH_USER'].":".$_SERVER['PHP_AUTH_PASSWORD']); ?>");
</script>
<app-root></app-root>
...
</body>
- 角會從localStorage的的頭憑據REST API
getProject(): Promise<Project> {
let auth_token = localStorage.getItem('auth_token');
let headers = new Headers();
headers.append('Authorization', 'Basic ' + auth_token);
let options = new RequestOptions({headers: headers});
return this.http
.get(this.restApiUrl, options)
.toPromise()
.then(response => response.json().data as Project)
.catch(this.handleError);
}
(這個解決方案沒有奏效。即使輸入我的憑證,我也會得到401授權。)