我应该在每个页面上放置一个Google登录按钮吗?

时间:2015-07-27 11:59:27

标签: javascript php session google-signin

我建立了一个非常简单的网站,用户使用索引页面上的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?

我想如果用户为一个页面添加书签,我可能会遇到问题,但在这种情况下,如果会话已经创建,我可能会更好地检查一下,如果不是,那么会重定向吗?

1 个答案:

答案 0 :(得分:1)

使用$_SESSION['LoggedIn']或类似的东西。

LoggedInCheck.php:

<?php
 session_start();

 if($_SESSION['LoggedIn']==FALSE){
     session_destroy();
     header("Location: /login.php");
     die;
 }

 else{}