Det finns något som heter System.Collections.ArrayList - är detta ett bra sätt att användas i en klass för att hantera användarspecifik information såsom förnamn och efternamn. Dock har jag som utgångsposition session("userid") för att såväl skriva in som hämta användarens information. Jag skulle gjort en User klasser som ärver System.Security.Principal.IIdentity. På så sätt kan du ersätta Contextens identity med ditt User objekt. Det här hjälpte mig tyvärr föga eftersom jag inte är en hejare på OO (än). Jag har nu skrivit en rutin för detta och tror nästan att jag skall publicera den för att kunna diskutera hur jag gjort och varför vilket brukar vara lättare. Gör gärna det.Vad är bästa sättet att hantera användare på i en asp.net applikation?
På nåt sätt känns det som jag är lite vilsen och tar tacksamt emot era tips på hur man hanterar flera användares profiler på klassiskt asp.net manér. Viktigt är att inte lagra för stora datamängder i minnet om många användare samtidigt är inne, för prestandan är ju alltid premierat.
jag vill helst hämta värden enligt syntax:
<info>
label1.text = pellesoft.user.firstname & pellesoft.user.lastname
</info>
Dock om man tittar på vad som skrivs så låter det kanske inte som det är rätt väg http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemCollectionsCollectionBaseClassTopic.asp?frame=true eftersom jag behöver skicka med userid som måste finnas med i listan konstant istället för ett indexvärde. Tänker jag fel?
Tacksam för tips, exempel och artiklarSv: Vad är bästa sättet att hantera användare på i en a
Då skulle du kunna komma åt användarinformation var som helst i din applikation tex på detta sätt:
((User)Context.User.Identity).FirstName
Du skulle då kunna se till så att din user property retunerar ditt user objekt utifrån contexten:
<code>
public class Pellesoft
{
...
public User User
{
get { return ((User)Context.User.Identity; }
...
}
}
label1.text = pellesoft.User.FirstName;
</code>
Ett annat förslag är användadndet av en Hashtable, inte arraylist som du nämnde. Med en arraylist så kommer du inte åt värden med hjälp av nycklar, utan måste använda numeriskindex.
Hashtable:
pellesoft.user["FirstName"].ToString();
Arraylist:
pellesoft.user[0].ToString();
Men jag skulle föredra det första exemplet för då kan du lätt komma åt data via properties.
OBS! Om din applikation körs i en Web Farm så är det viktigt att se till så datan hämtas och lagras centralt. Då skulle session vara ett alternativ, eller som jag skulle gjort, lagrat ett användar id på klienten i en cookie. Sedan för varje request i Application_BeginRequest eventet i global.asax så skulle jag se om Contextens identity inte innehåller User objeketet. Om den inte innehåller user objektet, så skulle jag använda cookien för att hämta använderinformation och lägga till den i contextens identity.
I ASP.Net 2.0 så finns det inbyggt stöd för att skapa använderprofiler, tyvärr är vi inte där ännu.
/Fredrik Normén NSQUARED2
http://www.nsquared2.netSv: Vad är bästa sättet att hantera användare på i en a
Helt klart vore det spännande med en dialog över hur man kan göra det på bästa sätt eftersom det känns som det finns många varianter till samma lösning.Sv: Vad är bästa sättet att hantera användare på i en a
Pattern & Practices jobbar just nu med ett Authorization & Profile block som skulle kunna hjälpa dig en hel del. Blocket påminner mkt om profile biten i ASP.Net 2.0. Tyvärr är blocket bara i beta stadiet ännu.
/Fredrik Normén NSQUARED2
http://www.nsquared2.net