如何:在 Silverlight 用戶端應用程式中啟用驗證

您可以藉由使用 LightSwitch 來防止未經授權的使用者讀取、變更或刪除資料,讓應用程式變得更加安全。 如果您實作驗證和授權,使用者就必須證明其身分識別,才能存取應用程式。

注意事項注意事項

設定權限的流程與 HTML 用戶端不同 - 請參閱 如何:在 HTML 用戶端應用程式中啟用驗證。已針對 SharePoint 啟用的 LightSwitch 應用程式使用 SharePoint 驗證進行存取控制。

如果您有許多使用者,也可以建立數個對特定螢幕和資料具有不同存取層級的使用者角色,然後再為每位使用者指派適當的角色,就能更輕鬆地管理存取。

例如,薪資應用程式可以允許員工檢視其薪資資訊,但不得加以變更。 然而,卻可以賦予薪資主管人員檢視和變更員工資訊的權限。 員工將被指派「員工」角色,而主管人員則被指派為「主管」角色。

您也可以在 Active Directory 安全性群組中加入使用者,然後指派權限給這些群組,就能更輕鬆地管理權限。 由於成員資格和權限是可以繼承的,所以只需要進行單一變更,就可以針對某一群組和其所有子群組來授與或拒絕權限。 例如,您可以將 Bob 加入至 Active Directory 中的 Sales 群組。 如果 Sales 是 Marketing 的子群組,任何您授與 Marketing 的權限也會授與給 Bob。

驗證

保護應用程式安全的第一個步驟是啟用驗證。 您可以使用表單驗證或 Windows 驗證。 表單驗證是由應用程式本身進行管理,而使用者必須提供使用者名稱和密碼才能存取應用程式。 在 Windows 驗證中,會使用登入執行應用程式的電腦時所用的認證來驗證應用程式使用者,並不需要其他的使用者名稱或密碼。 在這兩種情況下,應用程式系統管理員都會維護獲得授權的使用者清單。在表單驗證中,系統管理員還會維護加密密碼。

若要啟用驗證

  1. 在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。

  2. 在 [應用程式設計工具] 中,選擇 [存取控制] 索引標籤。

  3. 在 [選取要使用的驗證類型:] 清單中,選擇 [使用 Windows 驗證] 或 [使用表單驗證]。

    如果您選擇 [使用 Windows 驗證],請選擇 [僅允許您應用程式之使用者螢幕中指定的使用者] 選項按鈕或 [允許任何通過驗證的 Windows 使用者] 選項按鈕。

    應用程式現在會要求使用者提供認證以存取該應用程式。

若要停用驗證

  1. 在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。

  2. 在 [應用程式設計工具] 中,選擇 [存取控制] 索引標籤。

  3. 在 [選取要使用的驗證類型:] 清單中,選擇 [不要啟用驗證]。

    應用程式不會要求使用者提供認證以存取該應用程式。任何使用者都可以存取應用程式的每個部分。

使用權限

保護應用程式安全的下一個步驟是建立權限。 您可以定義螢幕、命令、資料實體及查詢的權限。 首先,在 [應用程式設計工具] 中定義權限物件。 然後您就可以在程式碼的其中一個 Can 方法 (例如 CanRun<ScreenName> 或 <QueryName>_CanExecute) 內參考該物件。 這些方法中的程式碼通常會檢查目前使用者或角色是否擁有權限,而只有在權限通過驗證時才會顯示表單或執行查詢。

若要測試您的程式碼,請同時以具權限使用者與不具權限使用者的身分執行該應用程式。 藉由設定偵錯權限,您可以在測試或偵錯應用程式時模擬使用者。

若要建立權限

  1. 在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。

  2. 在 [應用程式設計工具] 中,選擇 [存取控制] 索引標籤。

  3. 在 [定義權限或選取權限以用於偵錯] 格線的 [名稱] 欄中,選擇 [<加入新權限>],然後輸入權限的程式設計名稱。

    此名稱必須以字母字元開頭,而且只能包含字母、數字字元或底線。

  4. 在 [顯示名稱] 欄中,輸入您希望權限出現在應用程式系統管理員用於指派角色之螢幕中的名稱。

  5. 在 [描述] 欄中,輸入權限的說明。

若要撰寫程式碼以設定螢幕的權限

  1. 在 [方案總管] 中,開啟某個螢幕節點的捷徑功能表,然後選擇 [開啟]。

    該螢幕的 [螢幕設計工具] 隨即開啟。

  2. 在 [撰寫程式碼] 清單中,選擇 CanRunScreenName,其中 ScreenName 是所選取螢幕的名稱。

  3. 在 [程式碼編輯器] 中,於 CanRunScreenName 方法中輸入下面程式碼:

    If Application.User.HasPermission(Can_View_Products) Then
        result =  True
    Else
        result = False
    End If
    
    if (Application.User.HasPermission(Permissions.Can_View_Products))
    {
        result = true;
    }
    else
    {
        result = false;
    }
    

    每當應用程式啟動時,都會評估此程式碼。

    注意事項注意事項

    請注意,此程式碼範例會檢查是否有名為 Can_View_Products 的權限。取代您在應用程式中定義的權限名稱。

若要撰寫程式碼以設定命令的權限

  1. 在 [方案總管] 中,開啟某個螢幕節點的捷徑功能表,然後選擇 [開啟]。

    該螢幕的 [螢幕設計工具] 隨即開啟。

  2. 在 [螢幕內容樹狀結構] 窗格中,展開某個命令節點,然後選擇要為其撰寫程式碼的命令。

  3. 開啟該命令的捷徑功能表,然後選擇 ButtonName**_CanExecute**,其中 ButtonName 是您選擇的命令的名稱。

  4. 在 [程式碼編輯器] 的 ButtonName**_CanExecute** 方法中,輸入您要的程式碼。

    注意事項注意事項

    如需程式碼範例,請參閱本主題稍早的<若要撰寫程式碼以設定螢幕的權限>一節。

若要撰寫程式碼以設定實體的權限

  1. 在 [方案總管] 中,開啟某個實體節點的捷徑功能表,然後選擇 [開啟]。

    該實體的 [實體設計工具] 隨即開啟。

  2. 在 Entity Designer 中的 [透視圖] 列上,選擇 [伺服器]。

  3. 在 [撰寫程式碼] 清單中,選擇 EntityName**_Can**Operation 方法,其中 EntityName 是實體的名稱,而 Operation 則是您要為其撰寫程式碼的作業名稱。

    注意事項注意事項

    可用的方法會因內容而異。例如 CanDeleteCanUpdate 就是範例。

  4. 在 [程式碼編輯器] 的 EntityName**_Can**Operation 方法中,輸入您要的程式碼。

    注意事項注意事項

    如需程式碼範例,請參閱本主題稍早的<若要撰寫程式碼以設定螢幕的權限>一節。

若要撰寫程式碼以設定查詢的權限

  1. 在 [方案總管] 中,開啟某個查詢節點的捷徑功能表,然後選擇 [開啟]。

    該查詢的 [查詢設計工具] 隨即開啟。

  2. 在 [撰寫程式碼] 清單中,選擇其中一個 QueryName**_CanExecute** 方法,其中 QueryName 是查詢的名稱。

  3. 在 [程式碼編輯器] 的 QueryName**_CanExecute** 方法中,輸入您要的程式碼。

    注意事項注意事項

    如需程式碼範例,請參閱本主題稍早的<若要撰寫程式碼以設定螢幕的權限>一節。

若要啟用進行偵錯的權限

  1. 在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。

  2. 在 [應用程式設計工具] 中,選擇 [存取控制] 索引標籤。

  3. 在 [定義權限或選取權限以用於偵錯:] 格線中,選擇您要啟用的偵錯權限,然後選取 [針對偵錯授與] 核取方塊。

發行和管理

啟用驗證的最後一個步驟是在發行期間,定義應用程式的預設系統管理員。 發行後,預設系統管理員必須登入並定義使用者、角色和權限。

若要定義系統管理員

  • 請依照管理 LightSwitch 應用程式中的步驟進行。

    重要

    如果驗證已啟用,而您尚未定義預設系統管理員,則您將無法存取發行的應用程式。

請參閱

工作

管理 LightSwitch 應用程式

如何:在 HTML 用戶端應用程式中啟用驗證

概念

LightSwitch 的安全性考量

其他資源

LightSwitch 應用程式的 Silverlight 用戶端螢幕

Active Directory 安全性群組