跳轉到內容

使用 Google Apps Script 開發 Web 應用/身份驗證

來自華夏公益教科書,開放的書籍,開放的世界

為什麼要進行身份驗證?

[編輯 | 編輯原始碼]

通常,您需要保護您的 Web 應用以確保只有特定人員可以使用它。當您釋出頁面時,您在兩個主要類別中有一些選項

  1. 誰有訪問許可權(誰可以訪問頁面)?
    1. 只有您
    2. 您域中的任何人(對我來說是 hamlin.edu)
    3. 任何人
  2. 哪個帳戶用於執行指令碼?
    1. 您的(即使其他人訪問)
    2. 他們的(在上面的“任何人”中不起作用)

這些很有用,但它們有點粗略。有時您只希望特定的人員擁有訪問許可權,或者能夠執行某些操作。

誰在訪問?

[編輯 | 編輯原始碼]

對於本節,我們將假設您已將“誰有訪問許可權”設定為“您域中的任何人”。如果您這樣做,您可以透過以下方式確定誰在訪問

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

他們被允許嗎?

[編輯 | 編輯原始碼]

獲得使用者的電子郵件後,您可以將其與電子表格中允許使用者的表格進行匹配,該表格可能包含其他有關他們的資訊,例如他們被允許執行的操作。假設您有一個看起來像這樣的表格

“我的使用者”表格
電子郵件 姓名 角色
arundquist@hamline.edu Andy Rundquist 管理員
test1@hamline.edu Testy McTesterson 學生
test2@hamline.edu 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
華夏公益教科書