我最近从Apache Basic Auth迁移到Google OAuth2。以前,$_SERVER['PHP_AUTH_USER']
用于根据用户输入的信息进行设置。现在,我的页面页面显示与谷歌登录,$_SERVER['PHP_AUTH_USER']
不会被设置。我能够在控制台上打印用户信息使用
<script>function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail())
; 但是我的访问控制是通过userdata。 例如。如果用户== ABC =>将他添加到白名单, 如果用户== XYZ =>将他添加到黑名单等。在谷歌oauth之前它使用$_SERVER['PHP_AUTH_USER']
完成。
尽管我有这些信息要在控制台中打印,但我需要这个来检查要显示给用户的内容以及要隐藏的内容。没有关于如何使用此信息服务器端的信息。唯一的方法(我不认为是正确的方式是将用户信息发回服务器)以下是我尝试设置的代码$_SERVER variable
,但似乎应该有一个更好的方法来做到这一点。即使这不起作用。
<script>function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
console.log('Name: ' + profile.getName());
console.log('Image URL: ' + profile.getImageUrl());
console.log('Email: ' + profile.getEmail());
var emailid = profile.getEmail();
//window.location.href = "myphpfile.php?name=" + emailid;//tried this aswell
$.ajax({
url: 'myphpfile.php',
type: 'post', // performing a POST request
data : {email:emailid},
dataType: 'text',
success: function(data)
{
console.log(data); //nothing gets printed here
}
我还想不显示任何内容,直到用户用谷歌登录。虽然这可以稍后完成。但是目前因为我无法找到谁是谁已经登录的用户我自己的用户限制失败myfile.php - >
<?php
session_start();
$abc=$_POST['email'];
echo "$abc";
$_SESSION["PHP_AUTH_USER"] = $abc;
$_SERVER["PHP_AUTH_USER"] = $abc;
?>
我只需要获得的电子邮件ID和用户是否应当提供访问与否。
,为什么你会使用当你的所有认证逻辑都存在于服务器端时,客户端认证?您可以与服务器中的OAuth API集成。 –
以前我们不得不在服务器上以加密形式存储用户密码。所以每次用户更改密码时,我们都必须进行更改。但通过Google登录,密码检查由Google完成。我们只需要根据已登录的用户提供访问限制 – user1977867
我了解您使用OAuth进行(第三方身份验证),但不知道为什么您会选择客户端JavaScript实现而不是您的实现服务器端。您的服务器端代码可以处理与Google的API集成,这样您的服务器就可以检查响应并应用适当的权限。 –