为什么必须指定会员提供者

发布于 2024-10-19 14:04:08 字数 259 浏览 1 评论 0原文

我试图在不使用 Membership Provider 的情况下创建自己的登录功能,但在使用 System.Web.UI.WebControls.Login 控件登录并使用 FormsAuthentication.SetAuthCookie 设置身份验证 cookie 后(username, RememberMe);

我收到以下错误消息

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

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

I'm trying to make my own login functionality without using Membership Provider, but after I login using the System.Web.UI.WebControls.Login control and set the authentication cookie using FormsAuthentication.SetAuthCookie(username, rememberMe);

I got the following error message

Default Membership Provider must be specified.

I wonder why it must be specified ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

維他命╮ 2024-10-26 14:04:08

System.Web.UI.WebControls.Login 与成员资格提供程序紧密耦合。如果您想在没有会员提供商的情况下登录,您应该使用文本框和按钮制作自己的登录表单。

The System.Web.UI.WebControls.Login is tightly coupled to the Membership Providers. If you want to log in without a Membership Provider, you should just make your own login form with textboxes and buttons.

凉城已无爱 2024-10-26 14:04:08

我知道这已经很旧了,但我只是偶然发现了这个问题,因为我已经这样做了,所以想分享我的解决方案,以防其他人有需要。

问题是您需要处理 asp:Login 控件的 OnAuthenticate 事件。在最简单的形式中,您可以在 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 中!

I know this is old, but I just stumbled across the question and since I've done this wanted to share my solution in case anyone else should have need.

The catch is you need to handle the OnAuthenticate event of the asp:Login control. In the simplest form you would have this in the aspx:

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

And this in the code behind:

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

And this in 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>

This will get you a simple login form with a hardcoded user in web.config. Good for prototypes and demos, please don't put user accounts in web.configs for live sites!

心是晴朗的。 2024-10-26 14:04:08

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

有关详细信息,请参阅 MSDN 的会员简介

You have to add a section to your web.config telling it where to look for your membership roster. this will be either a database containing users, an active directory group, etc. otherwise, how does your app know where to authenticate your users?

Check out MSDN's Introduction to Membership for more information.

痴情 2024-10-26 14:04:08

我可以使用它而无需制作自己的登录表单。我刚刚从 webconfig 中删除了会员资格提供程序部分。

I could use it without making my own login form. I've just removed the membership provider section from the webconfig.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文