Ciao, prego!
le pass e le user le estraggo da un db. Si puo' fare?
Sì, e in questo modo potrai proteggerle meglio. Se non vuoi usare ASP.NET Core Identity, c'è un sistema precedente chiamato Membership API di cui puoi leggere qui.
https://www.aspitalia.com/articoli/asp.net2/membership_roles_api.aspxVedi se lo reputi più facile di ASP.NET Identity. Secondo me, in merito di sicurezza, è sempre meglio usare qualcosa fatto da autori attendibili (come Microsoft) piuttosto che ricreare la propria soluzione personalizzata.
Comunque, se alla fine decidi di realizzare la tua soluzione personalizzata, non dovresti salvare le password in chiaro nel database ma calcolarti un hash in maniera sicura.
Puoi usare una classe come questa, che usa un apposito algoritmo di derivazione che calcolerà l'hash per un migliaio di volte così da scoraggiare coloro che dovessero entrare in possesso del tuo database in maniera non autorizzata.
https://cmatskas.com/-net-password-hashing-using-pbkdf2/
La mia domanda è: viene creato un cookie per caso? Questo cookie ha un valore interno che corrisponde alla user name?
Internamente sì, c'è anche lo username ma l'intero contenuto del cookie viene cifrato da ASP.NET e quindi non è alterabile dall'utente. Se non fosse così potrebbe fingersi qualcun altro.
Puoi recuperare lo username dell'utente loggato in questo modo:
Dim nomeUtente As String = Nothing
'Prima verifico se l'utente risulta loggato
If User.Identity.IsAuthenticated Then
nomeUtente = User.Identity.Name
End If
che durata ha questo cookie?
Lo puoi decidere tu. Quando chiami SetAuthCookie, se nel secondo parametro passi False allora verrà creato un cookie di sessione che scadrà automaticamente alla chiusura del browser. Se invece passi True allora il cookie sarà persistente, che sopravvivrà anche al riavvio del browser. La durata effettiva la puoi impostare nel web.config.
<forms slidingExpiration="true" timeout="60" name=".MYSITEAUTH" loginUrl="Login.aspx" protection="All" >
</form>
In questo modo il cookie durerà per 60 minuti ma, dato che è stato impostato slidingExpiration="true", allora questi 60 minuti verranno rinnovati fintanto che l'utente continua a visitare il sito.
Se imposti slidingExpiration="false", saranno 60 minuti non rinnovabili (cioè una scadenza assoluta).
A proposito del PHP: io al momento sto usando in egual misura sia ASP.NET Core che PHP. Riesco a fare cose belle con entrambi ma preferisco il linguaggio C# e ASP.NET Core. Stasera in caso sarò più specifico.
tutti continuano a dire che php è meglio di aspnet?
Posta qualche link per contestualizzare le opinioni di queste persone.
chapeau!
;)