我需要用angular和use会话创建简单的登录。为此,我有两个php文件和angular文件。
这是PHP文件1
session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
$postdata = file_get_contents("php://input");
if(isset($postdata) && !empty($postdata)) {
$request = json_decode($postdata);
$username=trim($request->username);
$password=trim($request->password);
if($username == 'admin' && $password == 'admin') {
$_SESSION['user'] = 'admin';
?>
{
"success": true,
"secret": "This is the secret no one knows but the admin"
}
<?php
} else {
?>
{
"success": false,
"message": "Invalid credentials"
}
<?php
}
} else {
//var_dump($_POST)
?>
{
"success": false,
"message": "Only POST access accepted"
}
<?php
}
?>这是PHP文件2
<?php
session_start();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
$user = $_SESSION['user'];
echo '{
"message": "'.$user.'",
"success": true
}';
?>在我的一个组件的ngOnInit()中,我调用了这两个API(我知道第一个API应该在登录提交按钮中触发,但出于测试目的,我在一个下面使用了这两个API)。我甚至使用settimeout函数来延迟第二次调用
ngOnInit() {
this.auth.getUserDetails('admin','admin')
.subscribe(
data => {
console.log('success',data);
if(data.success){
}
else{
window.alert("invalid");
}
},
error=> {
console.log('failed',error);
}
)
var _this=this;
setTimeout(function(){
_this.user.getSomeData().subscribe(data=>{
console.log(data);
})
}, 3000);
}但是用户会话仍然不可用。我需要帮助来理解原因。请检查图像。For第一个post请求成功,但第二个get请求失败。它显示我使用的会话变量(user)不可用。
但该变量已由先前的请求设置。
谢谢
发布于 2020-04-29 13:32:13
您正在两个不同的服务器上工作: PHP的localhost:80和angular的Localhost:4200,因此您的会话请求是Localhost:4200,此请求不能访问PHP会话。因此,请在angular中为PHP端请求设置头部。
https://stackoverflow.com/questions/53799010
复制相似问题