Cannot retrieve UserData in Forms Authentication

J

John Kievlan

I am using FormsAuthentication for my application, and in
the UserData property of the FormsAuthenticationTicket
I'm storing the roles that the user is a member of, to
retrieve in global.asax and create a GenericPrincipal
object. Problem is, after the user logs in, I can get
the ticket just fine from the cookie, and all the data is
there -- except for the UserData property. It's empty.

I set the UserData as follows:

Dim authTicket As New FormsAuthenticationTicket(1,
txtUserID.Text, DateTime.Now, DateTime.Now.AddHours(1),
False, GetRoles(txtUserID.Text))
Dim encryptedTicket As String =
FormsAuthentication.Encrypt(authTicket)
Dim authCookie As New HttpCookie
(FormsAuthentication.FormsCookieName, encryptedTicket)
Response.Cookies.Add(authCookie)

Then I get the same cookie back in global.asax:

Dim cookieName As String =
FormsAuthentication.FormsCookieName
Dim authCookie As HttpCookie = Context.Request.Cookies
(cookieName)

If authCookie Is Nothing Then Exit Sub

Dim authTicket As FormsAuthenticationTicket =
FormsAuthentication.Decrypt(authCookie.Value)

If authTicket Is Nothing Then Exit Sub

Dim roles() As String = Split
(authTicket.UserData, "|") ' Roles are in the
format "Role1|Role2|...|RoleN"

Dim id As New FormsIdentity(authTicket)

Dim principal As New GenericPrincipal(id, roles)

Context.User = principal

And the user isn't in the given roles. I went back and
put:

Response.Write("'" & authTicket.UserData & "'")

in the global.asax file, and I get an empty string.
Anyone have an idea?
 
T

tom hamilton

Your code matches what I use. And I just re-ran my code,
and am getting user data back from the cookie.

I assume your setting the ticket in a login page. And
have added the necessary web.config entries. I haven't
tried my code against a browser that doesn't accept
cookies.

Sorry that the only assitance is to note that your code
appears correct. I'm only guessing that the problem lies
in configuration.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top