Question

The HTML is like:

  <asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false" OnLoggedIn="LoginUser_LoggedIn"
                    OnLoginError="LoginUser_LoginError">
</asp:Login>

On LoginUser_LoggedIn event I am setting the destination URL like:

LoginUser.DestinationPageUrl = "~/mycustompage.aspx";
FormsAuthentication.RedirectFromLoginPage(LoginUser.UserName, true);

Here when there is NO ReturnUrl in page URL then it is redirecting to "~/mycustompage.aspx" page but if there is any ReturnUrl specified in the URL then it is redirecting to the ReturnUrl page.

I always want to redirect to "~/mycustompage.aspx" page whether ReturnUrl is there or not. How to achieve this?

Many many thanks in advance!

Was it helpful?

Solution

DestinationPageUrl is the default destination page after Login.

?ReturnUrl is stronger than DestinationPageUrl so, if it is set it wins.

Response.Redirect in LoginUser_LoggedIn is stronger than ReturnUrl so, if you want to override ReturnUrl you must use this code:

 void LoginUser_LoggedIn(Object sender, EventArgs e)
    {
      Response.Redirect("~/mycustompage.aspx");
      ....
    }

DestinationPageUrl should be set in the aspx page

 <asp:Login DestinationPageUrl="~/mycustompage.aspx" ... />

or in Page_Load event to work properly.

void PageLoad(Object sender, EventArgs e)
    {
      LoginUser.DestinationPageUrl = "~/mycustompage.aspx";
      ....
    }

If you must change the destination page after login (in example if the page changes depending on the user or the user's role) you must use Server.trasfer() ore Response.Redirect().

void LoginUser_LoggedIn(Object sender, EventArgs e)
    {
      Response.Redirect("~/mycustompage.aspx");
      ....
    }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top