了解SimpleMembership

时间:2013-10-15 03:18:21

标签: simplemembership

我想在使用VS 2012 Internet模板的ASP.NET MVC 4 Web应用程序的上下文中找到有关SimpleMembershipProvider的更多信息。

Q1。模块配置在哪里?在ASP.NET Web表单版本中,可以在web.config中看到它。在MVC 4版本中,默认的web.config没有对成员资格提供程序的任何引用。

Q2。在machine.config中,有一个已配置的SqlMembershipProvider。在何时/何时被覆盖?

Q3。什么触发SimpleMembershipInitializer()被调用?它不在Globals.asax中。当我有一个已登录的用户并且我重新启动Web应用程序时(或者如果azurewebsites在休眠一段时间后将应用程序唤醒),则用户将遇到麻烦

  

您必须调用“WebSecurity.InitializeDatabaseConnection”方法   在调用“WebSecurity”类的任何其他方法之前

当他下次点击我网站上的链接时。可以多次调用此方法吗?

1 个答案:

答案 0 :(得分:0)

A1。 Internet模板应该在web.config中创建如下所示的条目。

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

这将配置SimpleMembership使用的角色和成员资格提供程序。当我使用VS 2012在我的机器上为MVC4创建Internet模板时,它们始终存在。确保查看应用程序根目录中的web.config,而不是Views目录中的web.config。此信息应位于根web.config中。如果不存在,则需要将其添加到SimpleMembership才能正常工作。

A2。当您将信息放入web.config中时,将覆盖其他提供程序,如A1所示。请注意,首先使用clear元素清除任何先前定义的提供者。

A3。 InitializeSimpleMembershipAttribute 装饰在 AccountController 上,以执行SimpleMembership的延迟初始化。只有在尝试访问AcccountController操作时才会调用它。例如,一旦用户登录,它将初始化数据库。这种初始化方法已经完成,因此如果不使用表单身份验证,使用Internet模板创建的应用程序仍然可以工作。我不喜欢这种初始化方法,如果我正在进行表单身份验证,我更喜欢在Global.asax Application_Start方法中执行此操作。您可以阅读change your app to use this initialization in this article的方法。

如果您不止一次致电WebSecurity.InitializeDatabaseConnection,它将抛出异常。将它包装在检查WebSecurity.Initialized的if语句中总是一个好习惯。