Как передать авторизацию Httpheaders в CORS в файле php - PullRequest
0 голосов
/ 20 апреля 2019

Я использую 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 ['Авторизация'];Мне нужно получить данные авторизации пользователя.а также взорвать данные Авторизации

...