1

我使用 aspx Visual Studio 2010 创建了一个新项目。我要做的只是用户登录并重定向到另一个页面。我打算将一些东西保存为 cookie 或应用程序/会话对象。
所以我用登录模板创建了一个全新的 aspx 应用程序。我打开了 login.aspx 并打开了登录按钮后面的代码。当用户单击确定时,我连接到我的 sql 服务器数据库并验证他们的登录名/密码。一旦我这样做并确定这是一个有效用户,我如何告诉 aspx 这是一个有效用户?

我注意到了这一点:

        <div class="loginDisplay">
            <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                <AnonymousTemplate>
                    [ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
                </AnonymousTemplate>
                <LoggedInTemplate>
                    Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
                    [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
                </LoggedInTemplate>
            </asp:LoginView>

所以我假设我需要以某种方式说用户已通过身份验证。但是怎么做?我想我对 LoginTemplates VS Anonymous 模板有点困惑。我怎么说现在使用 LoginTemplate 与匿名。是否有我必须执行的属性或方法?谢谢

4

2 回答 2

1

在 Login1_Authenticate 中试试这个:

您需要根据他输入的详细信息验证用户。如果用户通过身份验证,请将他重定向到您想要的任何地方。如果没有向他显示一些消息。

Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
        Dim IsValidate As Boolean = Membership.ValidateUser(Login1.UserName, Login1.Password)
        If Not IsValidate Then
            e.Authenticated = False
            Login1.FailureText = "Please check your mail if not activated."
        Else
            e.Authenticated = True
        End If
End Sub

并在 Login1_LoggedIn

Protected Sub Login1_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles Login1.LoggedIn
        If Request.QueryString("Url") IsNot Nothing Then
            Response.Redirect("~/" & Request.QueryString("Url").ToString())
        Else
            Response.Redirect("~/Default.aspx")
        End If
End Sub
于 2012-05-01T14:03:29.017 回答
0

验证用户凭据后使用RedirectFromLoginPage方法。这会将用户发送到他使用 ReturnUrl 查询字符串参数请求的 URL。这还将设置适当的 FormsAuthentication cookie。

于 2012-05-01T14:07:49.570 回答