2012-06-18 51 views
0

我有一个要求,当用户在完成多表单数据提交过程中登录时,会根据他们已经提交的数据和特定类别用户将会看到一条警告消息;即某些用户在登录时会收到弹出消息。控制ASP.NET从登录返回

弹出窗口将使用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; 
     } 
     ... 
    } 

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

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

+0

可以请你分享一些代码,用户验证和重定向? –

+0

@ImranBalouch根据要求更新。 – Dave

+0

我的回答和nunespascal一样,所以都投了票。 –

回答

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让用户回到原始页面并在那里显示消息。