0

我有一个要求,当用户在完成多表单数据提交过程时登录时,他们的个人资料会根据他们已经提交的数据进行检查,并且某些类别的用户将显示一条警报消息;即,一些用户在登录时会收到一条弹出消息。

弹出窗口将使用 Ajax 工具包中的 ModalPopupExtender,它与代码库中其他地方的类似功能一致。

我遇到的问题是,一旦用户被验证,用户总是被重定向到原始页面;我想暂停此操作,直到向用户显示消息,然后在用户单击以关闭消息时执行重定向。

任何人都可以提出解决方案(使用.NET 3.5)吗?

编辑

由于它被要求,登录页面有一个用户控件,其中包含一个控件。该控件处理基本上调用的 OnAuthenticate 事件:

    protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
    {
        bool isValidUser = Membership.ValidateUser(FullLogin.UserName, FullLogin.Password);

        if (isValidUser)
        {
            e.Authenticated = true;
        }
       ...
    }

它还处理 LoggedIn 事件,该事件执行一些业务逻辑并引发页面处理的“LogInSuccessful”或“LoginFailed”事件。成功登录会将用户重定向回原始页面。

我已经重构了关闭信息框时要调用的手动重定向代码,但似乎表单身份验证正在自动重定向用户,这是我试图覆盖的行为。

4

1 回答 1

2

当您使用表单身份验证登录时,asp.net 会将用户带到登录表单并返回原始页面。

一旦您对用户进行了身份验证,它将带他回到原始页面。如果您必须在此页面上执行此操作,则必须为这组用户取消身份验证,然后显示消息。

protected void Login_Authenticate(object sender, AuthenticateEventArgs e)
    {
        bool isValidUser = Membership.ValidateUser(FullLogin.UserName, FullLogin.Password);

        Session["isValidUser"] = isValidUser;
        if (!Session.ContainsKey("isValidUser"))
        {
            e.Authenticated = false;
        }
        else
        {
          e.Authenticated = (bool)Session["isValidUser"];
        }
       ...
    }

当用户单击确定按钮时,您必须回发并验证用户。这将需要您存储会话中上一次调用的身份验证结果。

将此消息放在一个通用母版页中可能更简单,让 asp 将用户带回原始页面并在那里显示消息。

于 2012-06-18T09:36:02.190 回答