Gem login tidspunkt ved "automatisk login"
Først et udklip af min global.asax.cs, der viser hvordan jeg "fanger" brugere der har gemt deres login (persistant) :protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
if(Request.IsAuthenticated)
{
// Find brugerens ID
int userID = Convert.ToInt16(User.Identity.Name);
// Hent brugerens roller fra databasen
ArrayList roles = new ArrayList();
foreach(DataRow role in _Data.GetRolesForUser(userID).Tables[0].Rows)
{
int levelID = Convert.ToInt16(role["levelID"].ToString());
while(levelID > 0)
{
roles.Add(role["sectionID"].ToString() + levelID);
levelID--;
}
}
// Konverter ArrayList til string[] array
string[] rolesArray = new string[roles.Count];
roles.CopyTo(rolesArray);
// Tilføj rollerne til en GenericPrincipal for identiteten
HttpContext.Current.User = new GenericPrincipal(User.Identity, rolesArray);
}
}
Spørgsmålet: Metoden Application_AuthenticateRequest() bliver eksekveret ved hvert eneste kald. Jeg ønsker at tilføje noget kode (mere præcist en sqlcommand der gemmer tidspunktet for login) ved det første kald i hver session. Kan jeg ikke tjecke om folk har fået tildelt en GenericPrincipal i forvejen, eller om de har flere roller end 0? Eller bliver jeg nødt til at oprette en Session variable som jeg så kan checke eksistensen af, og i så fald hvordan fungerer det hvis folk ikke har tilladt per session cookies?
