Я использую angular7.хранение данных текущего пользователя в localStorage.после этого интегрировал AuthInterceptor и вставил в файл app.module.ts
//after login getting user data
{"result":"success","UserId":"U-1","UserName":"Super Admin","UserEmail":"admin@dw.com"}
localStorage.setItem("currentUser", JSON.stringify(data));
Я создал вызов API выхода из системы с помощью сервиса.В файле php api я хочу сохранить время выхода пользователя из системы, используя UserId, который для этого получает localStorage
, я импортировал HttpHeaders и передаю данные localStorage currentUser в web-api thorgh Authorization
Я хочуполучить UserData (localStorage), используя концепцию авторизации заголовка CORS.
Я получаю сообщение об ошибке в файле logout.php.
неверный индекс авторизации
Я попробовал приведенный ниже код,
userloggingout(): Observable<logoutStatus>
{
return this.http.get<logoutStatus>(this.serverUrl + 'Login/logout.php',{headers: new HttpHeaders({'Authorization': 'Bearer'+JSON.parse(localStorage.getItem('currentUser'))})});
}
header.component.html
<nav class="navbar navbar-expand-sm bg-primary navbar-dark" *ngIf="isLoggedIn">
<!-- Links -->
<ul class="navbar-nav">
<li class="nav-item">
<a routerLink="/admin" class="nav-link">Admin Dashboard</a>
</li>
<li class="nav-item">
<a (click)="userlogout()" class="nav-link">Logout</a>
</li>
</ul>
</nav>
header.component.ts
import { Component, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
import { AuthService } from '../auth/auth.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
constructor(private titleService: Title, private authservice: AuthService, private router: Router) { }
ngOnInit() {
}
get isLoggedIn() { return this.authservice.isLoggedIn;}
setPageTitle(title: string) {
this.titleService.setTitle(title);
}
userlogout()
{
this.authservice.userloggingout().subscribe(
data =>{
if(data.success){
this.router.navigate([]);
}
else
{
window.alert("some problem");
}
}
)
}
}
auth.service.ts
import { Injectable } from '@angular/core';
import { HttpClient,HttpBackend,HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { Loginuser } from './login/loginuser';
import { environment } from 'src/environments/environment';
interface logoutStatus{
success: boolean
}
@Injectable({
providedIn: 'root'
})
export class AuthService {
isLoggedIn = false;
serverUrl = environment.baseUrl;
constructor(private http: HttpClient) { }
redirectUrl: string;
//user login api
userlogin(loginUser: Loginuser): Observable<Loginuser>{
return this.http.post<Loginuser>(this.serverUrl + 'Login/loginprocess.php', loginUser);
}
getAuthorizationToken() {
const currentUser = JSON.parse(localStorage.getItem('currentUser'));
return currentUser.UserId;
}
//user logout api
userloggingout(): Observable<logoutStatus>{
return this.http.get<logoutStatus>(this.serverUrl + 'Login/logout.php',{headers: new HttpHeaders({'Authorization': 'Bearer'+JSON.parse(localStorage.getItem('currentUser'))})});
}
}
auth.intercepter.ts
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { AuthService } from '../auth/auth.service';
import { Observable } from 'rxjs';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(private authservice: AuthService) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (this.authservice.isLoggedIn) {
const authToken = this.authservice.getAuthorizationToken();
req = req.clone({
setHeaders:
{ Authorization: `Bearer ${authToken}` }
}
);
}
return next.handle(req);
}
}
app.module.ts
providers: [Title, AuthGuard, AuthService, { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }],
logout.php
<?php
session_start();
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: authorization,Accept,Accept-Language,Content-Language,Content-Type");
echo $_SERVER['Authorization'];
if (isset($_SERVER['Authorization'])) {
$headers = trim($_SERVER["Authorization"]);
echo $headers;
}
else
{
echo "No Data";
}
?>
$ _ SERVER ['Авторизация'];Мне нужно получить данные авторизации пользователя.а также взорвать данные Авторизации