Недавно я перешел из Apache Basic Auth в Google OAuth2. Ранее $_SERVER['PHP_AUTH_USER']
использовался для установки в соответствии с введенной информацией пользователя. Теперь, когда моя страница страницы показывает signIn с Google, $_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())
; Однако мой контроль доступа осуществляется через пользовательские данные. например. если пользователь == ABC => добавьте его в белый список, , если пользователь == XYZ => добавьте его в черный список и т. д. До того, как google 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
}
Я также хотел бы ничего не показывать, пока пользователь не зайдет с помощью google. Хотя это можно сделать позже. Но в данный момент мое ограничение пользователь не потому, что я не могу найти, кто является пользователем, который подписал в myfile.php. ->
<?php
session_start();
$abc=$_POST['email'];
echo "$abc";
$_SESSION["PHP_AUTH_USER"] = $abc;
$_SERVER["PHP_AUTH_USER"] = $abc;
?>
Мне просто нужно, чтобы получить электронный идентификатор и посмотреть, если пользователь должен быть обеспечен доступ или нет.
Почему вы используете проверка подлинности на стороне клиента, когда вся ваша логика аутентификации существует на стороне сервера? Вы можете интегрироваться с API OAuth с сервера. –
Раньше нам приходилось хранить пароль пользователя в зашифрованном виде на сервере. Поэтому каждый раз, когда пользователь меняет пароль, мы должны были внести изменения. Но при входе в Google, проверка пароля выполняется Google. Нам нужно только предоставить ограничения доступа в соответствии с пользователем, который зарегистрировался в – user1977867
. Я понимаю, что вы используете OAuth для (сторонняя проверка подлинности), но не знаете, почему вы выбрали реализацию javascript на стороне клиента, а не реализацию на вашем сервер. Ваш серверный код может обрабатывать интеграцию API с Google, таким образом, ваш сервер может проверять ответ и применять соответствующие разрешения. –