ASP.NET的登录控件问题

Bir*_*iri 6 asp.net

我设置了一个网站,使用SqlMembershipProvider编写本页面.

我跟着每一步.我有数据库,我修改了Web.config以使用此提供程序,使用正确的连接字符串,并将身份验证模式设置为Forms.创建了一些用户进行测试.

我创建了一个Login.aspx并将Login控件放在上面.一切正常,直到用户可以登录.

我调用Default.aspx,它被重定向到Login.aspx,我输入用户和正确的密码.没有错误信息,似乎没有错,但我再次看到登录表单,输入用户的登录信息.但是,如果我在浏览器中检查cookie,我会看到存在具有指定名称的cookie.

我已经尝试自己处理这些事件并检查它们发生了什么,但没有成功.

我正在使用VS2008,文件系统中的网站,SQL Express 2005存储aspnetdb,没有角色管理,经过K-Meleon,IE7.0和Chrome测试.

有任何想法吗?

解决方案:在与Rob进行一些邮寄后,我们有了理想的解决方案,现在已经接受了答案.

Rob*_*per 6

RE:接受的答案

喜欢给出的黑客.

我有一个网站使用名为" login.aspx " 的登录表单,一切正常.我认为我们应该找到答案而不是黑客.因为所有[推测]测试的网站都有效.你不认为我们应该使用StackOverflow来找到ACTUAL问题吗?(使它比其他任何地方都有用吗?)

LoginCtl_Authenticate事件中,您是将EventArgs.Authenticated属性设置为true吗?

例如

protected void LoginCtl_Authenticate(object sender, AuthenticateEventArgs e)
{
   // Check the Credentials against DB
   bool authed = DAL.Authenticate(user, pass);
   e.Authenticated = authed;
}
Run Code Online (Sandbox Code Playgroud)


Rob*_*per 5

我已经在您发送给我的文件中检查了代码(再次感谢您发送给我).

注意:我没有测试过,因为我没有安装数据库等.

但是,我很确定这是问题所在.

您需要为ASP.NET控件设置MembershipProvider属性.为它们定义:

<asp:Login ID="Login1" runat="server" 
    MembershipProvider="MySqlMembershipProvider">
    <LayoutTemplate>
        <!-- template code snipped for brevity -->
    </LayoutTemplate>
</asp:Login>
Run Code Online (Sandbox Code Playgroud)

和..

<asp:CreateUserWizard ID="CreateUserWizard1" runat="server" 
    MembershipProvider="MySqlMembershipProvider">
        <WizardSteps>
            <asp:CreateUserWizardStep runat="server" />
            <asp:CompleteWizardStep runat="server" />
        </WizardSteps>
    </asp:CreateUserWizard>
Run Code Online (Sandbox Code Playgroud)

然后,它将控件绑定到具有给定名称的成员资格提供程序(您已在Web.Config中指定).

在你的解决方案中给出一个旋转,让我知道你是如何进行的.我希望这适合你:)

编辑

我还要补充,我知道你不应该需要做,因为默认的服务提供商设置的,但我有这个在过去的问题.我结束了他们全部设置为手动和所有工作得很好.