Не отображается логин после авторизации

Я хочу чтобы после входа в меню хедера отображалось меню логина. Для этого в ангуляре у меня есть соответствующий код:

Код файла header.component.html:

<nav class="navbar">
  <a routerLink="" id="nav_logo">
    DishOnline
  </a>
  <div id="nav_right_section">
    <a routerLink="/loginPage">
      Вход
    </a>

    <button [hidden]=" receivedAnswer!==undefined && receivedAnswer!==null" mat-button [matMenuTriggerFor]="menu">{{receivedAnswer.login}}</button>
    <mat-menu #menu="matMenu">
      <button mat-menu-item>Мой кабинет</button>
      <button mat-menu-item>Выйти</button>
    </mat-menu>

  </div>
</nav>

Код файла header.component.ts:

import {Component,OnInit } from '@angular/core';

import { LoginNameService} from '../services/loginName.service';
import {LoginName} from '../classes/loginName';

@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls : ['./header.component.scss'],

  providers: [LoginNameService]
})
export class HeaderComponent implements OnInit
{
  receivedAnswer: LoginName;

  loginNameObject: LoginName=new LoginName();


  constructor(private loginNameService: LoginNameService) {}
  submit() {
    this.loginNameService.postData()
      .subscribe((data: LoginName) => {},

        error => console.log(error)
      );
  }

  ngOnInit(): void {

    this.receivedAnswer=this.loginNameObject;
    this.submit();
  }

}

Отправляю я на сервер(в качестве backend у меня Spring Boot) пустой запрос, использую для этого свой сервис loginName.service.ts.

Код файла loginName.service.ts:

import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http';


@Injectable()
export class LoginNameService {

  constructor(private http: HttpClient) { }

  postData() {

    // tslint:disable-next-line:prefer-const
    let baseUrl = 'http://localhost:8089';

    return this.http.post(baseUrl + '/loginName', null);
  }
}

Со стороны сервиса мне приходить ответ в формате JSON:

{"login":"DishOnline"}

Но почему-то полученный логин не отображается в хедере.

Код получения логина на стороне backend (Spring Boot):

package com.greatproject.dishonline.controller;

import com.greatproject.dishonline.service.MyUserDetailsService;
import com.greatproject.dishonline.service.MyUserPrincipal;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.security.Principal;
import java.util.HashMap;
import java.util.Map;

@RestController
public class AuthorizationController {

    @RequestMapping("/loginName")
    public  @ResponseBody
    Map<String,String>  loginName(Model model,
                                  Authentication authentication,
                                  HttpSession session,
                                  MyUserPrincipal principal

    ) {
        String login = "";

        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        login = auth.getName(); //get logged in username

        Map<String, String> mapLoginName = new HashMap<String, String>();
        mapLoginName.put("login", login);

        return  mapLoginName;
    }

}

Помогите, пожалуйста, разобраться с данной проблемой.


Ответы (0 шт):