
Originariamente inviata da
U235
Io noto un po di incongruenze in entrambi...
Il fatto che si comportino diversamente è possibile che sia dovuto alla differenza di protocollo tra i due domini (http-https).
Proviamo a fare ordine:
La parte che chiami: "qui leggo" sta dentro la sub che avrai nominato "
Application_AuthenticateRequest" (
molto importante che si chiami esattamente così) nel
global.asax che avrai aggiunto al progetto?
Se si bene, diversamente aggiungi il
global.asax (nel caso non ci sia già, ma mi sa di no), dopo scrivi una sub di nome "
Application_AuthenticateRequest" e metti il codice di cui stiamo parlando.
una cosa del genere (potrebbero esserci errori di sintassi in quanto scrivo a braccio, e in genere scrivo in c#):
codice:
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
Dim FormsAuthCookie As HttpCookie = Request.Cookies(FormsAuthentication.FormsCookieName)
If Not FormsAuthCookie Is Nothing Then
Dim usr As String = FormsAuthCookie.Value
Dim Ticket As FormsAuthenticationTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value)
Dim roles As String() = Ticket.UserData.Split(New Char() {"|"})
Dim ID As IIdentity = New FormsIdentity(Ticket)
Dim principal As IPrincipal = New GenericPrincipal(ID, roles)
Context.User = principal
End If
End Sub
Fatto questo, nel caso, significherebbe che questo codice lo stavi usando per riconoscere l'utente, in questo caso li non serve... puoi usare o gli
attributi sulla classe o sul metodo o sub, in questo modo chi non autenticato o comunque non ha quella regola (ad esempio:
Admin;User;Editor ecc.) non entra nemmeno nella function o sub, mentre se lasci queste libere puoi controllare dentro il codice tramite : "
HttpContext.Current.Request.IsAuthenticated" o "
HttpContext.Current.User.Identity.IsAuthenticated", questo se dentro un controller, mentre se sei dentro la pagina credo possa non scrivere la parte "
HttpContext.Current", quindi da User in poi (se non ricordo male).
Per ricavare il nome utente e le altre informazioni vai in "
User.Identity.Name" (o
HttpContext.Current.User.Identity.Name) ecc.
Se la situazione è già questa allora andiamo avanti, posta eventualmente tutto il pezzo di codice (compreso di nome della function o sub) e dove lo stai posizionando. Ma ho come l'impressione che il nome utente tu lo metta in session... mi sbaglio?
P.S.
Nel caso dove scrivi il cookie ricorda di mettere le regole (roles) separate da "|" nel parametro "UserData", sempre ammesso che le voglia utilizzare per differenziare chi e dove può accedere (ne puoi mettere più di una per ogni utente ovviamente) ad una determinata risorsa.