Liferay API по умолчанию защищен, чтобы обойти, что вы можете добавить «auth.verifier.guest.allowed = false» в @Component, чтобы вы могли работать без токена, но для защиты вашего API вы должны удалить его, Liferay уже реализует сервис для генерации токена, используя следующий токен service / o / oauth2 /, для получения дополнительной информации вы можете обратиться по этой ссылке https://aspiresoftware.in/blog/liferay-service-authorization-with-oauth2-0/. в моем случае я создаю две службы
declare var Liferay;
@Injectable({
providedIn: 'root'
})
export class AuthSecurityService {
token: any;
constructor(private httpClient: HttpClient, private Cookie: CookieService, private handler: HttpBackend) {
this.httpClient = new HttpClient(handler);
}
getClientInfo() {
let container: any;
console.log(container)
let promise = new Promise((resolve, reject) => {
Liferay.Service(
'/oauthtwo.oauth2application/get-o-auth2-application',
{
companyId: fill companyId,
clientId: fill id client
},
function (obj) {
container = obj;
if (container != null) {
resolve(container);
}
}
);
});
return promise;
}
obtainAccessToken(res: any) {
let params = new URLSearchParams();
params.append('grant_type', 'client_credentials');
let headers =
new HttpHeaders({
'Content-type': 'application/x-www-form-urlencoded; charset=utf-8',
'Authorization': 'Basic ' +
btoa("id-client:" + res.clientSecret)
});
let options = { headers: headers };
this.httpClient.post('/o/oauth2/token',
params.toString(), options)
.subscribe(
data => this.saveToken(data),
err => alert('Invalid Credentials'));
}
saveToken(token) {
console.log(token)
this.token = token;
var expireDate = new Date().getTime() + (1000 * token.expires_in);
this.Cookie.set("access_token", token.access_token);
}
}
вторая служба
declare var Liferay;
@Injectable()
export class TokenInterceptorService implements HttpInterceptor {
constructor(public Cookie: CookieService) {}
intercept(request: HttpRequest<any>, next: HttpHandler){
if(Liferay.ThemeDisplay.isSignedIn()){
let headers = new HttpHeaders({
'Authorization': 'Bearer ' + this.Cookie.get('access_token'),
'Content-type': 'application/json'
});
request = request.clone({
headers
});
return next.handle(request);
}
}
}
Я надеюсь, что это может кому-то помочь