Я пытаюсь выяснить, как передать пользовательский токен, который возвращается как часть неявной процедуры oauth2 в сервисе, компоненту, который является URL-адресом обратного вызова, чтобы я мог затем использовать этот токен в дальнейшем.
сервисный код
import { Injectable } from '@angular/core';
import {UserManager, UserManagerSettings, User} from 'oidc-client';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private manager: UserManager = new UserManager(getClientSettings());
private user: User = null;
constructor() {
this.manager.getUser().then(user => {
this.user = user;
});
}
isLoggedIn(): boolean {
return this.user != null && !this.user.expired;
}
getClaims(): any {
return this.user.profile;
}
getAuthorizationHeaderValue(): string {
return `${this.user.token_type} ${this.user.access_token}`;
}
startAuthentication(): Promise<void> {
return this.manager.signinRedirect();
}
completeAuthentication(): Promise<void> {
return this.manager.signinRedirectCallback().then(user => {
console.log(user.access_token);
this.user = user;
});
}
}
export function getClientSettings(): UserManagerSettings {
return {
authority: 'https://someserver.com',
client_id: 'clientid',
redirect_uri: 'http://localhost:4200/auth-callback',
post_logout_redirect_uri: 'http://localhost:4200/',
response_type: "id_token token",
scope: "openid read write",
filterProtocolClaims: true,
loadUserInfo: false,
automaticSilentRenew: true,
silent_redirect_uri: 'http://localhost:4200/silent-refresh.html'
};
}
Используется библиотека OICD Oauth 2
код компонента ниже
import { Component, OnInit } from '@angular/core';
import { AuthService } from '../services/auth.service';
import { Router, NavigationCancel, ActivatedRoute } from '@angular/router';
import { URLSearchParams } from '@angular/http';
import { Http, RequestOptions, Headers, Response} from '@angular/http';
@Component({
selector: 'app-auth-callback',
templateUrl: './auth-callback.component.html',
styleUrls: ['./auth-callback.component.css'],
providers: [AuthService]
})
export class AuthCallbackComponent implements OnInit {
public accesstoken:any;
constructor(private http: Http, private router: Router, private authService: AuthService, private route: ActivatedRoute) {
}
ngOnInit() {
this.authService.completeAuthentication();
}
}
, как вы можете видеть, компонент успешно вызывает завершение аутентификации из сервиса при инициализации, однако я не могу понять, как передать user_token из сервиса в компонент. Вы увидите эту ссылку на токен в функции completeAuthentication службы, и в этот момент она успешно запишет журнал. На данный момент все, что я пытаюсь сделать, - это записать в консоль логин этого пользователя через компонент обратного вызова auth, чтобы показать, что он был передан правильно.