Abilitare la funzione “ricordami” i provider social in un progetto web forms
In questo articolo spieghiamo come implementare in modo semplice e rapido la funzione “ricordami” con le login social. Creando un nuovo progetto web application di tipo “web forms” è possibile scegliere la modalità di autenticazione “Individual User Accounts”.
A questo punto abilitare le login social google, facebook o altre si riduce solamente alla configurazione delle varie appid, clientid etc dei diversi provider. In questo modo la nostra applicazione web avrà in modo molto semplice e veloce la possibilità di far loggare gli utenti con le login social oppure di fargli creare un account specifico per l’applicazione.
La pagina di login che viene creata in questo modo (VS2013) ha due diversi “pannelli”:
- Uno per la login dell’applicazione
- Uno per le login social
La funzionalità “ricordami” è già presente ed implementata per la login dell’applicazione ma non lo è per le login social. Come facciamo ad implementarla anche per le social?
Bastano poche modifiche, in particolare modifichiamo:
- OpenAuthProviders.ascx
- RegisterExternalLogin.aspx
OpenAuthProviders
Modifichiamo l’ascx della pagina aggiungendo la checkbox “Ricordami”
<asp:CheckBox runat="server" ID="chkRememberMe" /> <asp:Label runat="server" AssociatedControlID="chkRememberMe"> <asp:Literal runat="server" Text="Ricordami" /> </asp:Label>
E modifichiamo il ascx.cs per cambiare la return url che il provider utilizzerà per “passarci” la scelta dell’utente, modifichiamo perciò la variabile redirectUrl nel seguente modo
string redirectUrl = ResolveUrl(String.Format(CultureInfo.InvariantCulture, "~/Account/RegisterExternalLogin?{0}={1}&returnUrl={2}&rememberme={3}", IdentityHelper.ProviderNameKey, provider, ReturnUrl, chkRememberMe.Checked));
RegisterExternalLogin
Questa è la pagina che effettivamente logga l’utente all’interno del sistema. Andremo a modificare solo l’aspx.cs, in particolare guardiamo le righe
if (user != null) { signInManager.SignIn(user, isPersistent: false, rememberBrowser: false); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); }
Il parametro che dobbiamo modificare è isPersistent in modo passare la scelta effettuata dall’utente. Le modifiche precedenti ci garantiscono di avere il parametro in query string perciò aggiorniamo il codice nel modo seguente
if (user != null) { var isPersistent = Convert.ToBoolean(Request["rememberme"]); signInManager.SignIn(user, isPersistent: isPersistent, rememberBrowser: false); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); }
In questo modo abbiamo implementato la funzionalità.