EF的ASP.NET成员资格提供者

时间:2012-08-31 22:50:09

标签: c# asp.net asp.net-mvc-3 entity-framework

我一直在使用ASP.NET成员资格提供程序,它一直很好地服务于我的基本目的。我意识到的一件事是,它将一堆Stored Procs等安装到数据库中。

是否有ASP.NET成员身份的EF实现?还是会有?

我有一个即将到来的项目,我将需要通过一些GUI扩展成员资格提供者的功能和角色和授权。

此外,每次我使用它时,我在web.config中有两个连接字符串,一个用于DbContext,一个用于Application服务,特别是对于Membership provider。为什么我不能只有一个?

3 个答案:

答案 0 :(得分:2)

您正在寻找通用提供商:http://nuget.org/packages/Microsoft.AspNet.Providers.Core

这些是在内部使用EF Code First 5实现的,一旦我们确保一切顺利进行,我们将公开内部DBContexts。

答案 1 :(得分:0)

对于Entity Framework中的ASP.NET成员资格提供程序和Roles实现,需要在EDMX文件中导入ASPNETDB(成员资格数据库)的所有视图。例如vw_aspnet_MembershipUsers,vw_aspnet_Roles,vw_aspnet_UsersInRoles,vw_aspnet_Users等......

然后会员资格将通过EF运行。因此,您可以使用以下功能提供GUI。

这是控制器代码。 e.g。

  // GET: /Membership/Edit/5

    public ActionResult Edit(Guid id)
    {
        var recordToEdit = (from r in _db.vw_aspnet_Users where r.UserId == id select r).First();
        return View(recordToEdit);
    }

    public ActionResult Index()
    {
        return View(_db.vw_aspnet_MembershipUsers.ToList());
    }

现在,如何将ASPNETDB合并到现有数据库,在web.config中只创建一个连接字符串。 (你的问题:为什么我不能只有一个?)

使用以下步骤也可以。

ASPNETDB.MDF是成员资格提供者数据库,用于存储和检索 来自数据库的成员资格数据,在这里我们将看到如何创建成员资格提供者数据库。用于创建Aspnetdb.mdf的命令是ASPNET_RegSQL.EXE

1.Start-> Programs-> Microsoft visual studio 2005-> visual studio tools-> Visual Studio 2005命令提示符。在visual Studio 2005命令提示符下键入ASPNET_RegSQL.EXE

  1. 将显示标题为“欢迎使用Asp.Net Sql Server向导”的向导。这里需要点击下一步

  2. 接下来会显示一个带有“选择设置选项”的向导。现在我们需要选择安装选项“为应用程序配置sql server是默认的”。选择你想要的和下一个。

  3. 将显示一个带有“选择Sql Server数据库”的窗口现在我们需要选择我们的sql server数据库。这里需要设置服务器,身份验证类型和数据库。 如果选择,将选择默认名称“aspnetDb.mdf”。如果要修改现有数据库,请选择该数据库。

  4. 5.现在将显示标题为“确认您的设置”的确认。现在检查servername和数据库名称,然后单击“下一步”。

    1. 将显示“已创建或修改数据库”的窗口。现在单击Finish
    2. 请注意以上步骤,您需要选择现有数据库,一些表(11 +),视图,成员资格和角色的存储过程将添加到您现有的数据库....

      享受它....谢谢......

答案 2 :(得分:0)

有MVI3的gui会员管理系统,您可以查看或添加到您的项目。

你可以和他们一起玩,看看他们是如何工作的。一旦你知道去哪里看就很简单,你可以自己创建。

Membership ClassMembershipUser Class包含所有用户信息。例如,要取消批准用户,您可以执行以下操作:

MembershipUser user = Membership.GetUser("userName");
user.IsApproved = false;
Membership.UpdateUser(user);

如果您想删除用户,可以使用Membership.DeleteUser("userName");

Roles Class具有所有角色相关信息。与Roles.GetUsersInRole("roleName")一样,我们会返回角色roleName中所有用户的列表。 Roles.CreateRole("roleName");将创建一个角色,Roles.DeleteRole("roleName");将删除一个角色。

如果您需要的不仅仅是默认值,您可以查看Implementing a Membership Provider

就拥有两个数据库而言,这不是必需的。您可以使用Aspnet_regsql工具将所有ASP.NET表,存储过程等添加到数据库中。看看Installing the Database using Aspnet_regsql.exe。这将允许您只有一个数据库,因此您可以删除Web.Config中的asp.net连接字符串,然后更改AspNetSqlMembershipProvider AspNetSqlProfileProvider AspNetSqlRoleProvider以及其他人,将连接字符串用于主数据库。