我是MVC的新手。所以我只用vs2013和互联网模板创建一个mvc项目。我发现了一个名为InitializeSimpleMembership
的课程。告诉我这门课的用法是什么。
我在这个函数OnActionExecuting & SimpleMembershipInitializer
上设置了断点,当我尝试访问任何受保护的页面或者当我点击登录或注册链接时,看到此函数被调用。我需要对这个课程InitializeSimpleMembership
有所了解。
这一行正在做什么LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
?
告诉我以下例程正在做什么
public SimpleMembershipInitializer()
{
Database.SetInitializer<UsersContext>(null);
try
{
using (var context = new UsersContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized.", ex);
}
}
我能理解这一行context.Database.Exists()
正在尝试检查特定的数据库是否存在。它试图检查的数据库是否存在?
这一行正在做什么WebSecurity.InitializeDatabaseConnection()
?
指导我需要做什么,因此简单的成员资格提供者创建了所需的表,我可以根据我的数据库验证用户。
告诉我如果我需要添加更多字段然后我需要做什么。 寻求指导。感谢
答案 0 :(得分:0)
SimpleMmbership提供程序已经与ASP.NET MVC 4一起引入。它扩展了核心成员资格和角色提供程序,以便更灵活地将用户信息存储在自定义数据库中。
属性InitializeSimpleMembershipAttribute
负责初始化简单成员资格提供程序,定义应该使用哪个上下文类来处理数据库(UserContext
类)。
WebSecurity.InitializeDatabaseConnection
初始化通过连接字符串(“DefaultConnection”)指定数据库的成员资格系统,存储用户配置文件数据的表的名称(“UserProfile”)和字段的名称应该用于登录,以便将用户配置文件与会员帐户匹配。
方法LazyInitializer.EnsureInitialized
只是确保简单成员资格初始化一次。
此属性创建管理连接字符串指定的数据库中的成员资格所必需的表。因此,它为UserProfile
模型类创建了表,其中包含“UserId”和“UserName”列,并使用“UserId”作为外键与身份验证和授权所需的其他自动生成的表相关联。
包含可以在用户配置文件上执行的所有基本操作的AccountController
使用属性进行修饰,这样每次用户尝试登录或注册简单成员资格时都会自动初始化。