LightSwitch 驗證和授權
在 LightSwitch,可以讓應用程式安全藉由防止未經授權的使用者讀取,變更或刪除資料。 如果您實作驗證和授權,使用者必須證明其識別,才能存取應用程式。 如果您有許多使用者,您可以建立具有不同層級對特定螢幕和資料然後指派每位使用者的存取適當的角色的使用者角色更輕鬆也處理存取。
例如,薪資應用程式讓員工可以檢視他們的薪資資訊,但不能更動。 不過,薪資主管擁有檢視及變更員工資訊的權限。 員工會被指派「員工」角色,而主管則被指派為「主管」角色。
您也可以執行使用權限輕鬆地將使用者加入 Active Directory 安全性群組並指派權限給這些群組。 由於可以繼承成員資格和使用權限,您可以使用單一變更來允許或拒絕群組和其所有子群組的權限。 例如,您可以將Bob 新增至 Active Directory 的 銷售 群組。 如果 銷售 是 市場營銷的子群組,任何你授與 市場營銷的權限也會授與給 Bob。
驗證
保護應用程式安全的第一個步驟是啟用驗證。 您可以使用表單驗證或 Windows 驗證。 表單驗證是由應用程式本身自行管理,而使用者必須提供使用者名稱和密碼才能存取應用程式。 在 Windows 驗證中,執行應用程式的電腦的登入認證會被用來驗證應用程式使用者,使用者不需要額外提供名稱或密碼。 在這兩種情況下,應用程式管理員會維護一份獲授權使用者的清單。 在表單驗證中,管理員也會維護加密密碼。
若要啟用驗證
在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。
在 [應用程式設計工具] 中,選取 [存取控制項] 選項。
在 [選取要使用的驗證類型:] 清單中,選取 [使用 Windows 驗證] 或 [使用表單驗證。]。
如果您選取了 [使用 Windows 驗證],請選取 [允許在應用程式使用者螢幕上指定的使用者] 選項按鈕或 [允許所有已驗證的 Windows 使用者] 選項按鈕。
應用程式現在會要求使用者提供認證以存取應用程式。
若要停用驗證
在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。
在 [應用程式設計工具] 中,選取 [存取控制項] 選項。
在 [選取要使用的驗證類型:] 清單中,選取 [不要啟用驗證。]。
存取應用程式時不會要求使用者提供認證,所有使用者都可以存取應用程式的任何部分。
使用權限
保護應用程式安全的下一個步驟是建立權限。 您可以定義畫面、命令、資料實體和查詢的權限。 首先,在 [應用程式設計工具] 中定義權限物件。 然後您就可以在程式碼中的Can方法(像是CanRun<ScreenName> 或 <QueryName>_CanExecute)內參考該物件。 這些方法中的程式碼通常會檢查目前的使用者或角色是否具有權限,然後在權限通過驗證時才會顯示表單或執行查詢。
若要測試您的程式碼,請分別以具權限使用者與不具權限使用者的身分執行該應用程式。 藉由設定偵錯權限,您可以在測試或偵錯應用程式時模擬使用者。
若要建立權限
在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。
在 [應用程式設計工具] 中,選取 [存取控制項] 選項。
在 [定義使用權限或選取使用權限偵錯使用] 方格中,在 [名稱] 欄中, [<Add New Permission>] 選取,然後輸入的程式設計名稱使用權限。
名稱開頭必須是字母字元,而且只能包含字母、數字字元或底線。
在 [顯示名稱。] 資料行中,輸入使用權限集合的名稱,您希望它出現在螢幕應用程式系統管理員將使用指派角色。
在 [描述] 資料行中,輸入使用權限的說明。
撰寫程式碼來設定畫面的權限
在 [方案總管] 中,開啟螢幕節點的捷徑功能表,然後選擇 [開啟]。
該螢幕的 [篩選設計工具] 開啟。
在 [撰寫程式碼] 清單中,選取 CanRunScreenName,其中 ScreenName 是選取的螢幕的名稱。
在 [程式碼編輯器] 中,輸入在 CanRunScreenName 方法的下列程式碼:
If Current.User.HasPermission(Can_View_Products) Then result = True Else result = False End If
if (Current.User.HasPermission(Permissions.Can_View_Products)) { result = true; } else { result = false; }
每當應用程式啟動時都會評估這段程式碼。
注意事項 請注意,程式碼範例會檢查是否有名為 Can_View_Products 的權限。每當其出現時,會以您在應用程式中定義的權限名稱取代之。
撰寫程式碼以設定命令的權限
在 [方案總管] 中,開啟螢幕節點的捷徑功能表,然後選擇 [開啟]。
該螢幕的 [篩選設計工具] 開啟。
在 [篩選內容樹狀結構。] 窗格中,展開排序節點,然後選取您要撰寫程式碼的命令。
開啟命令的捷徑功能表,然後選擇**_CanExecute**ButtonName,其中 ButtonName 是命令選擇的名稱。
在 [程式碼編輯器] 中,輸入您在 ButtonName**_CanExecute** 方法所需的程式碼。
注意事項 如需程式碼範例,請參閱本主題稍早介紹的<撰寫程式碼以設定畫面的權限>。
撰寫程式碼以設定實體的權限
在 [方案總管] 中,開啟實體節點的捷徑功能表,然後選擇 [開啟]。
該實體的 [實體設計工具] 開啟。
在 [撰寫程式碼] 清單中,選取 EntityName**_Can**作業 方法,其中 EntityName 是實體名稱,,而 作業 是您要撰寫程式碼作業的名稱。
注意事項 可用方法由內容變更。CanDelete和CanUpdate就是例子之一。
在 [程式碼編輯器] 中,輸入您在 EntityName**_Can**作業 方法想要的程式碼。
注意事項 如需程式碼範例,請參閱本主題稍早介紹的<撰寫程式碼以設定畫面的權限>。
撰寫程式碼以設定查詢的權限
在 [方案總管] 中,開啟查詢節點的捷徑功能表,然後選擇 [開啟]。
該查詢的 [查詢設計工具] 開啟。
在 [撰寫程式碼] 清單中,選取其中一個**_CanExecute**QueryName方法,其中 QueryName 是查詢的名稱。
在 [程式碼編輯器] 中,輸入您在 QueryName**_CanExecute** 方法所需的程式碼。
注意事項 如需程式碼範例,請參閱本主題稍早介紹的<撰寫程式碼以設定畫面的權限>。
啟用進行偵錯的權限
在 [方案總管] 中,開啟 [屬性] 節點的捷徑功能表,然後選擇 [開啟]。
在 [應用程式設計工具] 中,選取 [存取控制項] 選項。
在 [定義使用權限或選取使用權限偵錯使用] 方格中,選取要用於偵錯啟用的使用權限,然後選取 [授與對偵錯] 核取方塊。
發行
當您可以協助保護您的應用程式時,最後一個步驟是發行至。 當您第一次發行時,必須提供預設的系統管理員驗證資訊。 當您重新發行時,您不需要重複此步驟。
在發行應用程式時提供驗證資訊
在 [LightSwitch 發行應用程式精靈] 中,選取 [安全性設定] 頁面,然後選取 [是,建立應用程式系統管理員] 選項按鈕。
注意事項 才可以直接發行至伺服器,您必須執行其他步驟。如果您建立套件時,系統會提示您將系統管理帳戶,當您部署套件。
在 [使用者名稱。] 文字方塊中,輸入使用者名稱。
如果您使用 Windows 驗證,您必須指定具有表單 網域\使用者名稱的有效的 Windows 登入名稱。
提示
您也可以指派一個 Active Directory中的安全性群組做為預設系統管理員。
在 [完整名稱] 文字方塊中,輸入將為預設系統管理員使用者或群組的完整名稱。
在 [密碼] 文字方塊中,輸入密碼。
注意事項 如果您使用 Windows 驗證, [完整名稱]、 [密碼] 和 [確認密碼] 欄位尚未出現。
在 [確認密碼] 文字方塊中,再輸入密碼。
請記住使用者名稱和密碼,因為您將需要第一次指定它們您執行應用程式。
完成發行應用程式。
角色和使用者
如果您是應用程式系統管理員,您必須在第一次執行發行的應用程式。 然後您可以使用 [角色] 畫面和 [使用者] 畫面定義角色,將使用權限指派給角色並指派角色給使用者的使用者或群組。 您可以存取在執行應用程式的這些螢幕在設計階段,或在部署。 在設計階段,設定偵錯權限以存取畫面。 在已部署的應用程式中,被授與安全性管理權限的任何人都可以存取畫面。
注意事項 |
---|
若要註冊,您必須使用您指定的使用者名稱和密碼時發行應用程式。 |
若要定義角色並指派權限
以系統管理員權限執行,請在功能表列上發行的應用程式,請選取 [角色]。
在 [角色] 窗格中,選取 [+…] (加入) 按鈕。
在 [加入新的角色] 對話方塊中,輸入一個角色,然後選擇 [OK] 按鈕。
在 [使用權限] 窗格中,選取 [+…] (加入) 按鈕。
[權限]方格中出現新的一行。
在方格的第一個資料行,請選取清單中的使用權限。
此清單包含應用程式所有可用的權限。 您可以將許多使用權限,當您需要,不過,您必須選取每一個 [+…] (加入) 按鈕可以加入它。
在應用程式工具列上,選擇 [儲存] 按鈕儲存變更。
新增使用者或群組
在功能表列上,選擇 [使用者] 以顯示 [使用者] 畫面。
在 [使用者和群組] 窗格中,選取 [+…] (加入) 按鈕。
在 [名稱] 文字方塊中,輸入使用者名稱。
如果您使用 Windows 驗證,以類別名稱 (特里) 的表單中,您必須指定有效的使用者名稱,網域和別名 (範例\特里),類別名稱和網域 (terry@example.com),或是完整網域名稱及別名 (northamerica.corp.example.com \特里)。 整個字串必須包含少於超過 256 個字元。 您可以在 Active Directory 也可以指定安全性群組的名稱。 如果您使用表單驗證,使用者名稱必須是唯一且包含少於 256 個字元。
在 [完整名稱] 文字方塊中,輸入使用者的完整名稱。
[完整名稱]欄位中的資訊僅用於顯示。
注意事項 對於 Windows 驗證,則 [完整名稱] 欄位會自動填入根據這個使用者名稱,因此無法編輯。
在 [密碼] 文字方塊中,輸入密碼。
注意事項 因此,如果您使用 Windows 驗證, [密碼] 和 [確認密碼] 欄位尚未出現。
在 [確認密碼] 文字方塊中,輸入相同的密碼。
在 [角色] 窗格中,選取 [加入] 按鈕,然後選取 [角色] 清單中的角色。
您可以將使用者指派給多個角色可以針對每個角色的這個步驟。
在應用程式工具列上,選擇 [儲存] 按鈕儲存變更。
移除使用者或群組
在功能表列上,選擇 [使用者] 以顯示 [使用者] 畫面。
在 [使用者和群組] 窗格中,選取要移除的帳戶,然後選取 [x] (刪除) 按鈕。
注意事項 如果使用者登入已刪除的帳戶,使用者在伺服器上不再保存或存取資料。如果使用者嘗試從伺服器存取資料,拒絕存取訊息隨即出現。
注意事項 如果群組帳戶被刪除,則任何角色繼承自該群組的使用者會失去該角色的權限。
在應用程式工具列上,選擇 [儲存] 按鈕儲存變更。