Οκ, εσύ έχεις στο μυαλό σου να κάνεις ένα fuctionality. Το fuctionality του "Remember Me". αλλά δεν θέλεις και δεν πρέπει να το κάνεις με Session variables. Αυτό γιατί, για λόγους performance δεν μπορείς να έχεις μεγάλο session time out. Επίσης δεν παίζει αυτή η λύση ακόμα και αν "αυξήσεις" το Session timeout time του Session state από το web.config, όταν ο user κλείσει καταλάθος τον browser. Τότε θα χαθεί το session άσχετα με τoν timeout χρόνο.
Οπότε εσύ θα έχεις πάει κάποια στιγμή σε κάποιο site, θα έχεις κάνει login, και θα έχεις πάει πάλι μετά από 3 μέρες και το site σε θυμάται. Και θέλεις να κάνεις το ίδιο. Θα κάνεις αυτό που λέει ο Παναγιώτης. θα παίξεις με forms based authentication με cookies
Αν θες βλέπεις αυτό
εδώΣτο cookie μπορείς να αποθηκεύσεις (user credentials) μέχρι να το σβήσει κάποιος. Με αυτό τον τρόπο δεν χρειάζεται να κάνει re-login κάθε φορά που επισκέπτεται το site. επίσης μπορεί ο χρήστης από το browser settings να κάνει block τα cookies.
αυτός είναι ένας κίνδυνος που θα πρέπει να "ζήσεις"....
Για το πως υλοποιείται αυτό, θα πρέπει να δεις την
SetAuthCookie()
Δώσε βάση στο δεύτερο Parameter της παραπάνω function
createPersistentCookieType: System..::.Boolean
true to create a persistent cookie (one that is saved across browser sessions); otherwise, false.
και την RedirectFromLoginPage()
και την FormsAuthenticationticket class. φυσικά θα γράψεις λίγο κώδικα.
Όταν κάποιος κάνει log in στο site, τσεκάρεις το username και password σε σχέση με τα στοιχεία που υπάρχουν σε κάποιο πίνακα στην βάση.
αν γίνει match σε κάποιο event, μπορείς να γράψεις κάτι σαν
FormsAuthentication.SetAuthCookie(username.Text True)
και μετά για να δεις ότι κάποιος είναι logged in
If Context.User.Identity.IsAuthenticated Then...
θα πας και στο web.config και κάπου θα κάνεις το εξής
<authentication mode="Forms">
<forms loginUrl="register.aspx" .......... timeout="5000">
</forms>
</authentication>
δες και αυτό εδώ
το 5000 είναι Minutes, οπότε αυτό σημαίνει 3,5 μέρες.... χωρίς να γίνονται logged out.
Νικόλαος Καντζέλης
BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT