我一直在使用ASP.NET成员资格提供程序,它一直很好地服务于我的基本目的。我意识到的一件事是,它将一堆Stored Procs等安装到数据库中。
是否有ASP.NET成员身份的EF实现?还是会有?
我有一个即将到来的项目,我将需要通过一些GUI扩展成员资格提供者的功能和角色和授权。
此外,每次我使用它时,我在web.config中有两个连接字符串,一个用于DbContext,一个用于Application服务,特别是对于Membership provider。为什么我不能只有一个?
答案 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
将显示标题为“欢迎使用Asp.Net Sql Server向导”的向导。这里需要点击下一步
接下来会显示一个带有“选择设置选项”的向导。现在我们需要选择安装选项“为应用程序配置sql server是默认的”。选择你想要的和下一个。
将显示一个带有“选择Sql Server数据库”的窗口现在我们需要选择我们的sql server数据库。这里需要设置服务器,身份验证类型和数据库。 如果选择,将选择默认名称“aspnetDb.mdf”。如果要修改现有数据库,请选择该数据库。
5.现在将显示标题为“确认您的设置”的确认。现在检查servername和数据库名称,然后单击“下一步”。
请注意以上步骤,您需要选择现有数据库,一些表(11 +),视图,成员资格和角色的存储过程将添加到您现有的数据库....
享受它....谢谢......
答案 2 :(得分:0)
有MVI3的gui会员管理系统,您可以查看或添加到您的项目。
你可以和他们一起玩,看看他们是如何工作的。一旦你知道去哪里看就很简单,你可以自己创建。
Membership Class和MembershipUser 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
以及其他人,将连接字符串用于主数据库。