跳转到内容

使用 Google Apps Script 开发 Web 应用/身份验证

来自维基教科书,开放的书籍,开放的世界

为什么要进行身份验证?

[编辑 | 编辑源代码]

通常,您需要保护您的 Web 应用以确保只有特定人员可以使用它。当您发布页面时,您在两个主要类别中有一些选项

  1. 谁有访问权限(谁可以访问页面)?
    1. 只有您
    2. 您域中的任何人(对我来说是 hamlin.edu)
    3. 任何人
  2. 哪个帐户用于运行脚本?
    1. 您的(即使其他人访问)
    2. 他们的(在上面的“任何人”中不起作用)

这些很有用,但它们有点粗略。有时您只希望特定的人员拥有访问权限,或者能够执行某些操作。

谁在访问?

[编辑 | 编辑源代码]

对于本节,我们将假设您已将“谁有访问权限”设置为“您域中的任何人”。如果您这样做,您可以通过以下方式确定谁在访问

var email = Session.getActiveUser().getEmail();

他们被允许吗?

[编辑 | 编辑源代码]

获得用户的电子邮件后,您可以将其与电子表格中允许用户的表格进行匹配,该表格可能包含其他有关他们的信息,例如他们被允许执行的操作。假设您有一个看起来像这样的表格

“我的用户”表格
电子邮件 姓名 角色
[email protected] Andy Rundquist 管理员
[email protected] Testy McTesterson 学生
[email protected] Tess Tesserson 教职工

然后我们可以这样验证用户

var email = Session.getActiveUser().getEmail();
var usersData=SpreadsheetApp.getActive().getSheetByName("my users").getDataRange().getValues();
usersData.shift() // gets rid of headers row
var user = usersData.find(r=>r[0]==email);
if (!user) {
   return HtmlService.createHtmlOutput("sorry, nothing for you here");
   }
// now do something cool with the user
var role=user[2]; // not 3, remember how array numbering works
if (role == 'admin') {
   // do cool things here
   }
// etc
华夏公益教科书