Как использовать сеансы PHP в Angular4, чтобы проверить, вошел ли пользователь в систему или нет?

Я очень плохо знаком с Angular, и я работаю над приложением Angular4 + PHP, учетные данные пользователя отправляются на сервер из приложения Angular, и оно проверяется на сервере PHP (где db — MySQL). Я создал переменные сеанса в PHP, но я не знаю, как использовать их в приложении Angular, чтобы разрешить или запретить пользователю доступ к приборной панели, настройкам и т. Д. Я использую Service а также Guard в этом приложении,

Угловой код:

home.component.ts

authUser(event){
let formData = new FormData();
formData.append('uname',event.target[0].value);
formData.append('pwd',event.target[1].value);
this.http.post('http://localhost/auth.php', formData)
.subscribe((data) => {
let dat = data.json();
if (dat){
this.user.setUserBase();
this.route.navigate(['report']);
}
}, (error) => {
console.log("Error!", error);
});
}

user.service.ts

@Injectable()
export class UserbaseService {
private isLoggedIn;

constructor() {
this.isLoggedIn = false;
}
setUserBase(){
this.isLoggedIn = true;
}
getUserBase(){
return (this.isLoggedIn);
}
}

app.module.ts

const appRoutes: Routes = [
{
path: '',
component: HomeComponent
},
{
path: 'upload',
canActivate: [AuthGuard],
component: UploadComponent
},
]

auth.guard.ts

canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.user.getUserBase();
}

PHP-код:

<?php
session_start();
header('Access-Control-Allow-Origin: *');
require('connect.php');
$username = $_POST['uname'];
$password = $_POST['pwd'];
$query = "SELECT * FROM auth WHERE uname='$username' and passwd='$password'";
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);

if (!isset($myObj))
$myObj = new stdClass();

if ($count == 1){
$_SESSION['username'] = $username;
}
if (isset($_SESSION['username'])){
$myObj->user = $username;
$myObj->status = "authentic";
}
$response = json_encode($myObj);
echo ($response);
?>

Это навигация у меня в приложении; Home (страница по умолчанию), Dashboard, Settings, Logout,
Я хочу, чтобы пользователь был перенаправлен на Dashboard от Home если сеанс активен и если сеанс не разрушен, то пользователь должен быть перенаправлен на Home от Dashboard, или же Settings а также я хочу уничтожить сессию, нажав Logout, Помощь будет оценена.

2

Решение

Использование {withCredentials: true} в запросе HttpClient сработало для меня. Добавьте withCredentials к запросу на вход в систему и последующим запросам страницы. Увидеть: Установка запроса cookie angular2 http post request

0

Другие решения

Других решений пока нет …