了解简单成员资格



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

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

问题 2. 在 machine.config 中,有一个配置的 SqlMemberProvider。 在哪里/何时被覆盖?

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

您必须调用"WebSecurity.InitializeDatabaseConnection"方法 在调用"网络安全"类的任何其他方法之前

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

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 创建互联网模板时,它们总是在那里。确保查看的是应用程序的根目录中的 web.config,而不是视图目录中的 web.config。 此信息应位于根 web.config 中。 如果它不存在,则需要添加它才能使简单会员正常工作。

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

回答 3.InitializeSimpleMemberAttribute 装饰在您的 AccountController 上,用于执行 SimpleMembership 的延迟初始化。仅当您尝试访问 AcccountController 操作时,才会调用它。 例如,一旦用户登录,它就会初始化数据库。 完成此初始化方法,以便在不使用表单身份验证的情况下,使用 Internet 模板创建的应用程序仍可正常工作。我不喜欢这种初始化方法,如果我正在执行表单身份验证,我更喜欢在 Global.asax Application_Start 方法中进行初始化。可以在本文中阅读如何更改应用以使用此初始化。

如果您多次调用 WebSecurity.InitializeDatabaseConnection,它将引发异常。最好将其包装在检查 WebSecurity.Initialized 的 if 语句中。

最新更新