Как передать данные сеанса входа пользователя в php файл с помощью angular7 - PullRequest
0 голосов
/ 18 апреля 2019

Я создал сервис аутентификации, компонент входа в систему, компонент SuperAdmin / header. Используя службу аутентификации, я сопоставляю введенные пользователем значения с базой данных Mysql. и извлечение данных пользователя ниже в $ _SESSIONS. например: $ _SESSION ['UserId'] = $ UserId;

Данные кодирования Json:

{result: "success", UserId: "U-001", UserName: "Super Admin", UserEmail: "admin@dw.com", UserRoleId: 1, UserRole: Super Admin}

Построение вышеуказанных данных в localStorage.setItem

Столкнувшись с проблемами:

1). Как поддерживать сеансы в каждом компоненте и как передавать сеансы в фоновых файлах php при выполнении операций crud Если не получается сессия, как перенаправить с ошибками.

2). Не удается получить данные сеанса во время выхода из системы. echo $ _SESSION ['UserId']; // здесь не получается сессия

3). после входа я перенаправляю на страницу компонента SuperAdmin / header. здесь проблема в том, что если я нажму кнопку «Назад», она снова перенаправит на страницу входа

как решить вышеуказанные проблемы. Пожалуйста, помогите мне. Я новичок в angular7 и стадии обучения.

Заранее спасибо.

auth.service.ts

serverUrl = environment.baseUrl;

//Get each User data
  userlogin(loginUser: Loginuser): Observable<Loginuser>{
    return this.http.post<Loginuser>(this.serverUrl + 'Login/loginprocess.php', loginUser);
  }

  logout(){
    return this.http.get<logoutStatus>(this.serverUrl + 'Login/logout.php',)
  }

login.component.ts

  constructor(private router:Router,private fb: FormBuilder, private authservice: AuthService) 
  { 
    this.LoginForm = fb.group({
      emailid: ['', Validators.compose([Validators.required])],
      password: ['', Validators.compose([Validators.required, Validators.minLength(8), Validators.maxLength(8)])],
    })
  }

  ngOnInit() {
  }

  LogInUser(){
    let login = this.LoginForm.value;
    this.checklogin(login);
  }
  checklogin(loginUser: Loginuser)
  {
    this.authservice.userlogin(loginUser).subscribe(
      data =>{
        if(data["result"]=="success"){
          this.showSuccessAlert = true;
          this.SuccessAlert = data["result"];
          this.LoginForm.reset();
          localStorage.setItem("UserData", JSON.stringify(data));

          // localStorage.setItem("UserId", JSON.stringify(data["UserId"]));
          // localStorage.setItem("UserName", JSON.stringify(data["UserName"]));

          this.router.navigate(['SuperAdmin']);
        }
        else
        {
          this.showWarningAlert = true;
          this.WarningAlert = data["result"];
        }
      }
    )
  }

logout.ts

   ngOnInit(){
    this.authservice.logout().subscribe(data => {
      if(data.success)
      {
        this.router.navigate(['']);
      }
      else
      {
        window.alert('some problem');
      }
    })
}

logout.php

<?php
session_start();
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: authorization, Content-Type");
if(isset($_SESSION['UserId']))
{
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Headers: authorization, Content-Type");
    echo $_SESSION['UserId']; //not getting session here

// i need to store logout time here for partilcular user
}
?>

Мне нужно проверять сессию для каждой операции crud. Если сессия существует, ОК. иначе покажите ошибки.

...