Link to home
Start Free TrialLog in
Avatar of scm0sml
scm0sml

asked on

different destinations for FormsAuthentication.RedirectFromLoginPage

I have my login page which uses formsauthentication and uses FormsAuthentication.RedirectFromLoginPage

The problem is that dependant on the user that logs in I want to redirect to different pages.

The user information is stored in a database an a user will be linked to different profiles etc.

I was thinking about just redirecting to an aspx page that does this work, so go to the database and get user details then a select case to do the different redirects.

Is there anyway I can set the formasautthentication redirect page rather than having to do my idea?
Avatar of Swapnil
Swapnil
Flag of India image

Hi scm0sml,

In below article,
http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.getredirecturl%28v=vs.80%29.aspx

See following code snippet, and add your logic where I have put comment in bold.

     
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
        username,
        DateTime.Now,
        DateTime.Now.AddMinutes(30),
        isPersistent,
        userData,
        FormsAuthentication.FormsCookiePath);

      // Encrypt the ticket.
      string encTicket = FormsAuthentication.Encrypt(ticket);

      // Create the cookie.
      Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
        
[b]      // This will redirect to orginal url user has requested to (like in /login.aspx?ReturnUrl=caller.aspx, caller.aspx is the redirect url).
      // You can fetch database url here and redirect user to specific based on their config[/b]
      // Redirect back to original URL.
      Response.Redirect(FormsAuthentication.GetRedirectUrl(username, isPersistent));

Open in new window

 
 
Thanks,
netswap
Avatar of scm0sml
scm0sml

ASKER

Thanks for that.

The way I want it to work is:
 If HelperGeneral.AuthenticateUser(lgIndex.UserName, lgIndex.Password) Then

                loggedInUser = HelperGeneral.GetUser(lgIndex.UserName)
                Session("UserID") = loggedInUser.UserID

                Select Case loggedInUser.Profile.ProfileTypeID
                    Case Common.ProfileStatus.AccountsPayable
                        'direct to one link
                    Case Common.ProfileStatus.Import
                        'direct to another link
                    Case Common.ProfileStatus.RevenueControl
                        'direct to or another link
                End Select

            Else
                divTrouble.Visible = True
            End If

So as you can see we check the profile of a user and dependat on that want to redirect to specific pages.

How would your method fit into that?
Hi scm0sml,

      Can you please post full code, You have mentioned that you are using forms authentication and FormsAuthentication.RedirectFromLoginPage(). From above code snippetI am not able to figure out where you have used forms authentication?

     
Thanks,
Netswap.
Avatar of scm0sml

ASKER

basically this is all i have at the moment because im testing and dont want to have to put a password in each time etc. The rest of the code is just commented in at the mo.

loggedInUser = HelperGeneral.GetUser(lgIndex.UserName)

            Session("UserID") = loggedInUser.UserID

            FormsAuthentication.RedirectFromLoginPage(lgIndex.UserName, lgIndex.RememberMeSet)

So from that I need my example above working but redirecting to different pages under each case staement.

Make sense?
ASKER CERTIFIED SOLUTION
Avatar of Swapnil
Swapnil
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of scm0sml

ASKER

OK so your code has created an auth ticket that means the user is now authenticated yes?

And I just do a normal response.redirect to my pages and they will be authorised to view pages........

Correct?
Right.
Avatar of scm0sml

ASKER

Just an update on this, the re-driect is working fine but I am not sure the security is working properly. Apolgoies for the delay, will get back to you asap!