首页 文章

通过Google登录Web保持Web App用户登录

提问于
浏览
1

我已经构建了一个使用Google联合登录作为唯一登录选项(https://developers.google.com/identity/sign-in/web/)的Web应用程序 . 目前,每次用户访问网络应用时,系统都会提示他们选择Google帐户并输入密码 . 如果用户之前已登录过应用或当前已登录到正确的Google帐户,我想绕过登录页面并将其指向应用程序 .

上下文:此登录页面的目标是验证登录用户的域 . 如果登录用户属于某个域(例如@ samplecompany.com),则用户可以继续该应用程序 . 如果没有,系统会提示他们使用正确的Google帐户登录 .

如果可能,我想检查登录用户的域而不提示用户登录 . 如果没有,我需要找到一种方法让用户在最初登录后返回Web应用程序时绕过登录页面网络应用 .

作为进一步的上下文,登录页面代码的javascript目前是:

<script src="https://apis.google.com/js/api:client.js"></script>
<script>
var googleUser = {};
var startApp = function() {
  gapi.load('auth2', function(){
    auth2 = gapi.auth2.init({
      client_id: 'clientid',
      cookiepolicy: 'single_host_origin'
    });
    var options = new gapi.auth2.SigninOptionsBuilder();
    attachSignin(document.getElementById('button'), options, auth2);
  });
};

function attachSignin(element, options, auth2) {
  auth2.attachClickHandler(element, options,
      function(googleUser) {
            email = googleUser.getBasicProfile().getEmail();
            domain = googleUser.getHostedDomain();
            if (domain == 'samplecompany.com'){
              //Proceed to application               
            }
            else {
            auth2.signOut();
            alert ('Please sign in with samplecompany.com email.'); 
          }

      }, function(error) {
        auth2.signOut();
      });
}
startApp();
</script>

我已经搜索了一种访问基本用户信息的方法,而无需遍历OAuth流程,这似乎是不可能的 . 我真的很感激如何避免要求用户每次访问应用程序时都要登录,而我需要验证的是用户的域名 .

非常感谢!

1 回答

  • 0

    你可以这样做:

    第1步:当用户使用google“使用google登录”登录时,请提供“保持登录状态”复选框

    第2步:如果用户在使用谷歌登录时检查"stay logged in",那么在浏览器中设置一个cookie,其有效期可能是从现在开始的60天或者是用户容易的事情:https://github.com/js-cookie/js-cookie

    第3步:下次用户打开您的网络应用时,检查Cookie是否有效,然后将其重定向到其帐户页面/信息中心

    总的来说,如果用户选择保持登录状态,则每次访问您的Web应用程序时都会阻止登录过程 . 如果他们不这样做,他们必须手动登录“登录谷歌” .

相关问题