65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 LightSwitch 应用程序管理现有用户和角色

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (3投票s)

2011年11月28日

CPOL

5分钟阅读

viewsIcon

29734

本文介绍了一个用于从现有数据库管理用户和角色的 LightSwitch 应用程序

user.png

引言

本文介绍如何将现有用户数据库与 LightSwitch 应用程序结合使用。我在网上搜索了这个问题的答案,但没有找到我想要的。我找到一个关于将当前应用程序用户链接到另一个表的示例,但没有关于在 LightSwitch 应用程序中使用现有用户数据库的示例。本文将逐步介绍这个过程。

文章目录

  • 问答
  • 创建用户数据库
  • 创建 LightSwitch 应用程序
  • 修改 LightSwitch 应用程序以连接到现有用户数据库

问答

您的应用程序/扩展程序做什么?它解决了什么业务问题?

该应用程序用于管理现有数据库中的用户。

此应用程序有多少屏幕和实体?

该应用程序没有任何实体和自定义屏幕。该应用程序使用默认的用户和角色屏幕来展示功能。

LightSwitch 为您的业务节省了资金吗?如何节省?

此应用程序可以通过使用现有的用户数据库来节省资金。无需在新 LightSwitch 应用中重新输入用户。

创建用户数据库

LightSwitch 应用程序使用与所有其他 .NET 应用程序相同的安全数据库表。由于我没有现有的用户数据库,我将在其中创建一个。

众所周知,要将 aspnet_* 数据库表和存储过程添加到现有数据库,我们可以使用 aspnet_regsql.exe 工具。使用 SQL Server Management Studio 创建数据库后,我们可以运行以下命令来添加我们的表。

addTables.png

在上图所示,您可以看到我们将成员资格、角色和配置文件表添加到 LSTestDB 数据库。这些是 LightSwitch 应用程序使用的表。运行此命令后,我们的数据库中就有了指定的表。如下图所示。

addTables2.png

LightSwitch 使用一个附加表。该表名为 RolePermissions ,用于保存分配给角色的所有权限。下图展示了表结构。

addTables3.png

我们无需将此表添加到我们的数据库。权限将保留在 LightSwitch 应用程序数据库中(该数据库使用 _IntrinsicData 连接字符串)。

此时,数据库已准备就绪。

创建 LightSwitch 应用程序

下一步是创建 LightSwitch 应用程序。为此,我们只需按照新建项目向导操作即可。项目打开后,我们需要设置应用程序使用窗体身份验证。这可以在“属性”窗口的“访问控制”选项卡中完成。如下图所示。

accessControl.png

从上图可以看出,我授予了调试的安全管理权限。这将允许我们访问 UI 中的相应屏幕。我们现在可以运行应用程序,看看是否一切正常。下图展示了该应用程序。

emptyApp.png

请记住不要添加任何用户,因为这会将用户添加到 LightSwitch 数据库。

修改 LightSwitch 应用程序以连接到现有用户数据库

现在是激动人心的部分。我们将修改一些 LightSwitch 生成的文件以连接到我们的用户数据库。特别是,我们将修改生成的 web.config 文件。该文件可以在 ServerGenerated 项目中找到。这是我们创建应用程序项目时生成的项目之一。要访问 web.config 文件,我们需要从 **逻辑视图** 切换到 **文件视图**,如下图所示。

fileView.png

然后我们需要单击 **显示所有文件** 并从 ServerGenerated 项目中打开 web.config 文件。

在此文件中,我们可以看到一些有趣的内容。

  • 已添加一个指向默认数据源的连接字符串,其名称为 _IntrinsicData
  • 成员资格、角色和配置文件提供程序已设置,并使用 _IntrinsicData 连接字符串。

为了使应用程序使用我们的用户数据库,我们需要执行两项操作:

  • 添加一个指向我们用户数据库的新连接字符串。
  • 使提供程序使用我们的连接字符串而不是 _IntrinsicData

我们将把以下连接字符串添加到 web.config 文件中。

<add name="myDB" connectionString="Data Source=.\sqlexpress;
         Initial Catalog=LSTestDB;Integrated Security=True;
         Connect Timeout=30;MultipleActiveResultSets=True" />

此连接字符串与生成的连接字符串非常相似,只是未设置 User Instance 属性。现在剩下要做的就是将提供程序指向使用我们的连接字符串。如果用户已存在于数据库中,我们还需要将提供程序中的 applicationName 设置为我们要从中访问用户的应用程序。

就是这样。我们要开始测试工作的第一件事是添加一些随机权限,如下图所示。

permission.png

在此之后,我们可以启动应用程序并添加一个测试用户和角色。如下图所示。我们的自定义权限也已添加到角色中。

role.png

user.png

我们要做的最后一件事是检查我们的数据库,看看数据是否已添加。下图展示了结果。

results.png

从上图可以看出,用户和角色确实被添加了。

就是这样。希望您喜欢这篇文章。如果您有时间或有其他解决方案,请随时发表评论。

© . All rights reserved.