我已经构建了一个使用Google联合登录作为唯一登录选项(https://developers.google.com/identity/sign-in/web/)的Web应用程序。目前,每次用户访问网络应用时,系统都会提示他们选择Google帐户并输入密码。如果用户之前已登录过该应用,或者当前已登录到正确的Google帐户,我想绕过登录页面并将其指向应用程序。
上下文:此登录页面的目标是验证登录用户的域。如果登录用户属于某个域(例如@ samplecompany.com),则用户可以继续该应用程序。如果没有,系统会提示他们使用正确的Google帐户登录。
如果可能,我想检查登录用户的域而不提示用户登录。如果没有,我需要找到一种方法让用户在最初返回Web应用程序后绕过登录页面登录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流程,这似乎是不可能的。我真的很感激如何避免要求用户每次访问应用时都要登录,而我需要验证的是用户的域名。
非常感谢!
答案 0 :(得分:0)
您可以这样做:
步骤1: 当用户使用Google登录“使用Google登录”时,请提供一个复选框“保持登录状态”
第2步:如果用户在通过google登录时选中了“保持登录状态”,则在浏览器中设置cookie,其有效期可能是从现在开始60天,或者是用户电子邮件中的某些内容。 (检查jquery cookie,很容易:https://github.com/js-cookie/js-cookie)
第3步:下次用户打开您的Web应用程序时,请检查Cookie是否有效,然后将其重定向到其帐户页面/仪表板
总体上,如果用户选择保持登录状态,则每次访问您的Web应用程序时,它们都会阻止登录过程。如果没有,则必须使用“使用google登录”手动登录。