我建立了一个非常简单的网站,用户使用索引页面上的Google登录按钮登录。验证令牌等后,会创建一个PHP会话,在页面之间携带Google用户ID,以便识别用户。
我还写了一些代码(目的是将其包含在大多数页面中),它会显示Google登录按钮,再次验证令牌并退出到index.php,如果Google生成的用户ID没有&# 39; t匹配PHP会话正在携带的那个。我不确定这是否有必要,但我认为如果可以欺骗会话用户ID,它可能会提高安全性。
<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>
这是必要的吗,或者我应该只在首页上使用登录按钮并依次使用会话用户ID?
我想如果用户为一个页面添加书签,我可能会遇到问题,但在这种情况下,如果会话已经创建,我可能会更好地检查一下,如果不是,那么会重定向吗?
答案 0 :(得分:1)
使用$_SESSION['LoggedIn']
或类似的东西。
LoggedInCheck.php:
<?php
session_start();
if($_SESSION['LoggedIn']==FALSE){
session_destroy();
header("Location: /login.php");
die;
}
else{}