我想了解更多关于SimpleMembershipProvider在使用VS 2012互联网模板的ASP.NET MVC 4 web应用程序的上下文中的信息。
Q1.模块在哪里配置?在ASP.NET web表单版本中,它可以在web.config中看到。在MVC 4版本中,默认的web.config没有对成员提供程序的任何引用。
Q2. In machine.config,有一个配置好的SqlMembershipProvider。在什么地方/什么时候重写这个?
Q3.是什么触发了SimpleMembershipInitializer()被称为?它不在Globals.asax中。当我有一个已经登录的用户,我重新启动了web应用程序(或者如果already在休眠一段时间后唤醒了应用程序),用户就会陷入麻烦。
在调用"WebSecurity.InitializeDatabaseConnection“类的任何其他方法之前,必须调用"WebSecurity”方法。
当他下一次点击我网站上的链接时。可以不止一次地调用这个方法吗?
发布于 2013-10-15 14:52:28
A1.互联网模板应该在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中。如果没有它,则需要添加它才能使SimpleMembership正确工作。
A2.当您将信息放入web.config中时,将覆盖其他提供程序,如A1中所示。请注意,clear元素首先用于清除任何先前定义的提供程序。
A3. InitializeSimpleMembershipAttribute被装饰在AccountController上以执行SimpleMembership的延迟初始化。只有当您尝试访问AcccountController操作时才会调用它。例如,一旦用户登录,它就会初始化数据库。完成此初始化方法后,如果不使用窗体身份验证,则使用Internet模板创建的应用程序仍能工作。我不喜欢这种初始化方法,如果要进行表单身份验证,我更喜欢在Global.asax Application_Start方法中这样做。您可以阅读如何更改应用程序以使用本文中的初始化。
如果您多次调用WebSecurity.InitializeDatabaseConnection,它将引发异常。在检查WebSecurity.Initialized的if语句中包装它总是一种很好的做法。
https://stackoverflow.com/questions/19372729
复制相似问题