Jag har läst på flera ställen att man bara kan föra in ett värde cookien vid forms authentication. Detta värde är användarid.
Jag har även hört att man ska kunna modifiera detta på något sätt.
Jag vill förutom användarid också föra in ett värde som anger vilken typ av användare den som loggar in är.
Spara de värden du vill spara som en kommaseparerad sträng, så kan du hämta ut de genom att splitta den sedan.
Ett annat alternativ är att spara just ett användarid, men sidamtidigt spara övrig information på lämpligt ställe som du kopplar ihop med just ditt användarid.
function myuserid(txt)
Dim ch() As Char = New Char(1) {}
ch(0) =","c
Dim vec() As String = txt.Split(ch)
myuserid = txt(0)
end function
function myadmin(txt)
Dim ch() As Char = New Char(1) {}
ch(0) =","c
Dim vec() As String = txt.Split(ch)
myadmin = txt(1)
end function
ser dom rätt ut?
det här händer vid inloggningen:
'userid och adminstatus är hämtat från databasen båda är integers
dim info as string = userid & "," & adminstatus
FormsAuthentication.RedirectFromLoginPage(info, false)
mitt felmeddelande lyder som följer: Operator is not valid for type 'Integer' and type 'Char'
Detta händer när den ska hämta den inloggade användarens userid:
myuserid(User.Identity.Name)
Jag har även lagt till <%@ Import Namespace="System.Web.Security " %> som man ska.
Vad är felet? Jag får känslan av att det är nåt i funktionerna som jag precis fick hjälp med, att det inte går att splitta med char när det är integers. Stämmer detta?
Detta är ett system jag använt tidigare och jag kan välj cut'n pasta några delar av koden som du skulle kunna använda.
' set logincookie
System.Web.Security.FormsAuthentication.SetAuthCookie(_
"eUser|" & iId & "|" & strUsername & "|" & strRealName, False)
...
' this class exctracts userinfo of loggedIn users
' standard userinfo is stored as "eUser|id|username|realname"
' encrypted in formsauthentication
Public Class UserInfo
' extract userid
Public Shared Function ID(ByVal UserInfo As String) As String
Dim items() As String
items = UserInfo.Split("|")
Return items(1)
End Function
' extract username
Public Shared Function Name(ByVal UserInfo As String) As String
Dim items() As String
items = UserInfo.Split("|")
Return items(2)
End Function
' extract userRealname
Public Shared Function Realname(ByVal UserInfo As String) As String
Dim items() As String
items = UserInfo.Split("|")
Return items(3)
End Function
End Class
Nu löste det sig. :)
Då får jag tacka alla som hjälpte till att lösa detta. Slutgiltiga svaret får väl ändå bli Brimba som gav mig idén till lösningen. :)
137 ms totalt · 3 externa anrop · v20260731065814-full.b746b907