Я очень плохо знаком с 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
, Помощь будет оценена.
Использование {withCredentials: true} в запросе HttpClient сработало для меня. Добавьте withCredentials к запросу на вход в систему и последующим запросам страницы. Увидеть: Установка запроса cookie angular2 http post request
Других решений пока нет …