为何必须指定会员提供者

时间:2011-02-28 14:06:15

标签: asp.net asp.net-membership

我正在尝试在不使用成员资格提供程序的情况下创建自己的登录功能,但在使用System.Web.UI.WebControls.Login控件登录并使用FormsAuthentication.SetAuthCookie(username, rememberMe);

设置身份验证Cookie后

我收到以下错误消息

  

必须指定默认成员资格提供程序。

我想知道为什么必须指明它?

4 个答案:

答案 0 :(得分:2)

System.Web.UI.WebControls.Login与会员提供商紧密相连。如果您想在没有会员提供者的情况下登录,您应该使用文本框和按钮创建自己的登录表单。

答案 1 :(得分:1)

您必须在web.config中添加一个部分,告诉它在哪里查找您的会员名单。这将是一个包含用户的数据库,一个活动目录组等。否则,您的应用程序如何知道在哪里验证您的用户?

查看MSDN's Introduction to Membership了解详情。

答案 2 :(得分:1)

我可以在不使用自己的登录表单的情况下使用它。我刚刚从webconfig中删除了成员资格提供程序部分。

答案 3 :(得分:1)

我知道这已经过时了,但我偶然发现了这个问题,因为我已经这样做了,想要分享我的解决方案,以防其他任何人需要。

您需要处理OnAuthenticate控件的asp:Login事件。在最简单的形式中,您将在aspx中使用它:

<asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
</asp:Login>

这在后面的代码中:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) {
    e.Authenticated = FormsAuthentication.Authenticate(Login1.UserName, Login1.Password);
}

这是在web.config中:

<membership>
  <providers>
    <clear/>
  </providers>
</membership>
<authorization>
  <allow users="?"/>
</authorization>
<authentication mode="Forms">
  <forms cookieless="UseCookies" loginUrl="~/Login.aspx" path="/" protection="None" name="user_login_cookie">
    <credentials passwordFormat="Clear">
      <user name="user" password="password_in_clear!"/>
    </credentials>
  </forms>
</authentication>

这将为您提供一个简单的登录表单,其中包含web.config中的硬编码用户。适用于原型和演示,请不要将用户帐户放在web.configs中用于直播站点!