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à.

comments powered by Disqus