LightSwitch 身份验证和授权
在 LightSwitch,可以使应用程序安全地传递防止未经授权的用户阅读,更改或删除数据。如果实现身份验证和授权,用户必须证明其标识,在它们可以访问应用程序。如果有多个用户,则可以通过创建具有访问的不同级别对特定屏幕和数据然后为每个用户分配到相应的角色的用户角色更轻松地还管理访问。
例如,雇员可以使用工资单应用程序来查看但不能更改其工资单信息。但是,可以授予工资单主管权限,以查看和更改雇员信息。雇员将被分配雇员角色,而主管将被分配主管角色。
还可以通过在 Active Directory 中向安全组添加用户,然后通过将权限指定给这些组,以便更易于管理权限。因为继承了成员资格和权限,因此您可以通过进行单个更改为组及其所有子组授予和拒绝权限。例如,您可以在 Active Directory 中向“销售”组添加 Bob。如果 销售 是 营销 的子组,那么赋予 营销 的任意权限也将授予 Bob。
身份验证
保护应用程序安全的第一步是,启用身份验证。您可以使用表单身份验证或 Windows 身份验证。表单身份验证由应用程序自身进行管理,并且用户必须提供用户名和密码才能访问该应用程序。在 Windows 身份验证中,用来登录到应用程序在其中运行的计算机的凭据用于对应用程序用户进行身份验证,并且不需要其他的用户名或密码。在两种身份验证方法中,应用程序管理员都保留有一份授权用户列表;在表单身份验证中,管理员还保留加密密码。
启用身份验证
在 解决方案资源管理器,打开 属性 节点的快捷菜单,然后选择 打开。
在 应用程序设计器,选择 访问控制 选项。
在 选择要使用的身份验证类型: 列表中,选择 使用 Windows 身份验证 或 使用 Forms 身份验证。
如果选择了 使用 Windows 身份验证,选择 仅允许应用程序“用户”屏幕中指定的用户 选项按钮或 允许任何经过身份验证的 Windows 用户 选择键。
该应用程序此时将要求用户提供凭据才能访问该应用程序。
禁用身份验证
在 解决方案资源管理器,打开 属性 节点的快捷菜单,然后选择 打开。
在 应用程序设计器,选择 访问控制 选项。
在 选择要使用的身份验证类型: 列表中,选择 不启用身份验证。
该应用程序将不会要求用户提供凭据才能访问该应用程序,并且所有用户都可以访问该应用程序的任何部分。
权限
保护应用程序安全的下一步是,创建权限。您可以定义屏幕、命令、数据实体以及查询的权限。首先,在 Application Designer (应用程序设计器) 中定义权限对象。然后,可以使用 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 的权限。当它出现时,替换您已在应用程序中定义的权限名称。
编写代码以设置命令权限
在 解决方案资源管理器,打开屏幕节点的快捷菜单,然后选择 打开。
该屏幕的 屏幕设计器 打开。
在 屏幕内容树 窗格中,展开命令节点,然后选择要编写代码的命令。
打开命令的快捷菜单,然后选择 ButtonName**_CanExecute**,ButtonName 是命令的名称您选择。
在 代码编辑器,输入在 ButtonName**_CanExecute** 方法需的代码。
说明 有关代码示例,请参见本主题中前面的“编写代码以设置屏幕的权限”。
编写代码以设置实体权限
在 解决方案资源管理器,打开实体节点的快捷菜单,然后选择 打开。
该实体的 实体设计器 打开。
在 编写代码 列表中,选择 EntityName**_Can**操作 方法,EntityName 是实体的名称,并且,操作 是要编写代码操作的名称。
说明 可用的方法由上下文更改。一些示例包括 CanDelete 和 CanUpdate。
在 代码编辑器,输入在 EntityName**_Can**操作 方法需的代码。
说明 有关代码示例,请参见本主题中前面的“编写代码以设置屏幕的权限”。
编写代码以设置查询权限
在 解决方案资源管理器,打开查询节点的快捷菜单,然后选择 打开。
该查询的 查询设计器 打开。
在 编写代码 列表中,选择一个 QueryName**_CanExecute** 方法,QueryName 是查询的名称。
在 代码编辑器,输入在 QueryName**_CanExecute** 方法需的代码。
说明 有关代码示例,请参见本主题中前面的“编写代码以设置屏幕的权限”。
启用调试权限
在 解决方案资源管理器,打开 属性 节点的快捷菜单,然后选择 打开。
在 应用程序设计器,选择 访问控制 选项。
在 定义权限或选择权限用于调试 网格中,选择要用于调试启用的权限,然后选择 授予调试权限 复选框。
发布
在帮助保护您的应用程序时,最后一步是将其发布到。在您第一次发布时,必须提供默认管理员的身份验证信息。当您再次发布时,不必重复此步骤。
在您发布应用程序时提供身份验证信息
在 LightSwitch 发布应用程序向导,选择 安全设置 页,然后选择 是,创建一个应用程序管理员 选项按钮。
说明 只有 + 当要发布直接添加到服务器,必须执行其余步骤。如果您创建一个程序包,系统将提示您添加一个管理帐户,在部署程序包。
在 用户名 文本框中,输入用户名。
如果使用 windows 身份验证,您必须指定具有窗体 域\用户名的有效的 windows 登录名。
提示 还可以在 Active Directory 中将安全组指定为默认管理员。
在 全名 文本框中,键入要为默认值管理员用户或组的全名。
在 密码 文本框中,输入密码。
说明 如果使用 windows 身份验证,全名、密码 和 确认密码 字段不会显示。
在 确认密码 文本框,再输入一个密码。
请确保用户名和密码,因为您需要首次指定其您运行应用程序。
完成发布该应用程序。
角色和用户
如果您是应用程序控制器,您必须第一次运行发布应用程序。使用 角色 屏幕和 用户 屏幕定义角色,然后将权限分配给角色,并向用户分配角色的用户或组。您可以在运行的应用程序的这些屏幕在设计时或,则部署方式。在设计时,设置调试权限可以访问这些屏幕。在已部署的应用程序中,已被授予安全管理权限的所有人都可以访问这些屏幕。
说明 |
---|
要登录,则必须使用您指定的用户名和密码时要发布的应用程序。 |
定义角色和分配权限
在运行于管理员特权下,在菜单栏上的一个已发布应用程序,请选择 角色。
在 角色 窗格中,选择 +… (添加) 按钮。
在 添加新角色 对话框中,输入一个的角色的名称,然后选择 确定 按钮。
在 权限 窗格中,选择 +… (添加) 按钮。
此时在 Permissions (权限) 网格中会出现新的行。
在网格的第一列中,选择列表中的权限。
该列表包含应用程序中所有的可用权限。可以将许多权限,如果需要,但是,您必须选择的每个 +… (添加) 按钮来添加控件。
在应用程序工具栏上,选择 保存 按钮保存更改。
添加用户或域用户组
在菜单栏上,依次选择 用户 显示 用户 屏幕。
在 用户和组 窗格中,选择 +… (添加) 按钮。
在 名称 文本框中,输入用户名。
如果使用 windows 身份验证,以别名 (terry) 的形式,必须指定有效的用户名,字段和别名 (示例 \terry),别名和字段 (terry@example.com),或完全限定域名和别名 (northamerica.corp.example.com\terry)。整个字符串必须包含小于超过 256 个字符。在 Active Directory 中指定安全组的名称。如果使用 forms 身份验证,用户名必须是唯一的和长度少于 256 个字符。
在 全名 文本框中,输入用户的全名。
Full Name (全名) 字段中的信息仅用于显示目的。
说明 对于 windows 身份验证,全名 字段会自动填充基于用户名,并且无法编辑。
在 密码 文本框中,输入密码。
说明 如果使用 windows 身份验证,密码 和 确认密码 字段不会显示。
在 确认密码 文本框中,输入密码。
在 角色 窗格中,选择 添加 按钮,然后在 角色 的一个角色列表。
可以将用户分配给多个角色通过重复此步骤为每个角色。
在应用程序工具栏上,选择 保存 按钮保存更改。
移除用户或域用户组
在菜单栏上,依次选择 用户 显示 用户 屏幕。
在 用户和组 窗格中,选择要移除的帐户,然后选择 X (删除) 按钮。
说明 如果用户登录。已删除的帐户,用户在服务器上不再保存或访问数据。如果用户尝试从服务器访问数据,访问拒绝消息。
说明 如果组帐户被删除,那么从该组继承的角色的任何用户将失去访问该角色的权限。
在应用程序工具栏上,选择 保存 按钮保存更改。