ASP.NET Membership: how to set the user as logged in ASP.NET Membership: how to set the user as logged in asp.net asp.net

ASP.NET Membership: how to set the user as logged in


Put this in Login1_Authenticate before calling Response.Redirect("/admin/default.aspx");

FormsAuthentication.SetAuthCookie("username", true);


Try moving your code and Gromer's suggestion to the LoggedIn event.

protected void Login1_LoggedIn(object sender, EventArgs e)    {        if(Membership.ValidateUser(Login1.UserName, Login1.Password))        {            FormsAuthentication.SetAuthCookie(Login1.UserName, true);            Response.Redirect("/admin/default.aspx");        }    }

EDIT: Like Gromer said, only do this if you have to execute some business code after the user is logged in and before s/he is redirected.

EDIT EDIT: Visual Studio describes the Authenticate event as, "called to authenticate the user," which implies that the user is not authenticated before the event is called. Thus, you cannot confirm that the user is logged in because s/he has not been authenticated yet.


While I don't know how much help this will be, this is boilerplate code I use to discern between admin users or regular users. Works great for me.

On your login page, probably onclick create your user object and call some function with this code (UserRole is an Enum with your roles):

If admin Then             If role = UserRole.Admin Then                RedirectFromLoginPage(username & "|" & userid, False)                Return True            Else                Return False            End If        Else            If String.IsNullOrEmpty(Current.Request.QueryString("ReturnUrl")) Then                SetAuthCookie(username & "|" & userid, True)            Else                RedirectFromLoginPage(username & "|" & userid, True)            End If            Return True        End If

In your web.config:

<location path="admin">    <system.web>        <authorization>            <allow roles="Admin"/>            <deny users="*"/>        </authorization>    </system.web></location>.....<system.web><authentication mode="Forms">        <forms loginUrl="/registration/login.aspx" timeout="129600"/>    </authentication>    <authorization>        <allow users="*"/>    </authorization></system.web>

... and if you really want, in your Global.asax page:

    Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)    If Request.IsAuthenticated Then'''get your roles for the current user''' Dim userRoles() As String = Split(roles, "|")        'Add the roles to the User Principal'        HttpContext.Current.User = New GenericPrincipal(User.Identity, userRoles)    End IfEnd Sub