Я создал довольно простой сайт, на который пользователи заходят с помощью кнопки входа Google на странице индекса. После проверки токена и т. Д. Создается сеанс PHP, переносящий идентификатор пользователя Google со страницы на страницу, чтобы идентифицировать пользователя.
Я также написал небольшой код (с намерением включить его в большинство страниц), который будет отображать кнопку входа в Google, еще раз проверить токен и выйти в index.php, если созданный Google идентификатор пользователя не совпадает с тот, который переносится сессией PHP. Я не уверен, если это необходимо, но я подумал, что это может немного улучшить безопасность в случае возможности подделки идентификатора пользователя сеанса.
<div class="g-signin2" data-onsuccess="onSignIn"></div>
<script>
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
var id_token = googleUser.getAuthResponse().id_token;
var userid = <? echo $userid; ?>;
$.get("https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=" + id_token, function( data ) {
if (data.sub != userid)
{
window.location = 'index.php'; // If the Google log-in doesn't match $userid, redirects to index
}
}, "json" );
}
</script>
Это необходимо, или я должен просто иметь кнопку входа на главной странице и с этого момента полагаться на идентификатор пользователя сеанса?
Я полагаю, что у меня может быть проблема, если пользователь добавит страницу в закладки, но в этом случае, возможно, мне лучше иметь какую-то проверку, был ли создан сеанс, и перенаправить, если нет?
использование $_SESSION['LoggedIn']
или что-то похожее.
LoggedInCheck.php:
<?php
session_start();
if($_SESSION['LoggedIn']==FALSE){
session_destroy();
header("Location: /login.php");
die;
}
else{}
Других решений пока нет …