关于ASP.Net MVC4中InitializeSimpleMembership类使用的几个问题

时间:2015-09-03 11:18:08

标签: asp.net-mvc-4 simplemembership

我是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()

指导我需要做什么,因此简单的成员资格提供者创建了所需的表,我可以根据我的数据库验证用户。

告诉我如果我需要添加更多字段然后我需要做什么。 寻求指导。感谢

1 个答案:

答案 0 :(得分:0)

SimpleMmbership提供程序已经与ASP.NET MVC 4一起引入。它扩展了核心成员资格和角色提供程序,以便更灵活地将用户信息存储在自定义数据库中。

属性InitializeSimpleMembershipAttribute负责初始化简单成员资格提供程序,定义应该使用哪个上下文类来处理数据库(UserContext类)。

WebSecurity.InitializeDatabaseConnection初始化通过连接字符串(“DefaultConnection”)指定数据库的成员资格系统,存储用户配置文件数据的表的名称(“UserProfile”)和字段的名称应该用于登录,以便将用户配置文件与会员帐户匹配。

方法LazyInitializer.EnsureInitialized只是确保简单成员资格初始化一次。

此属性创建管理连接字符串指定的数据库中的成员资格所必需的表。因此,它为UserProfile模型类创建了表,其中包含“UserId”和“UserName”列,并使用“UserId”作为外键与身份验证和授权所需的其他自动生成的表相关联。 包含可以在用户配置文件上执行的所有基本操作的AccountController使用属性进行修饰,这样每次用户尝试登录或注册简单成员资格时都会自动初始化。

http://weblogs.asp.net/jongalloway/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates