mercoledì 7 settembre 2011

How To: Login Panel Custom Message

L'argomento è ancora Membership (decisamente attuale per il mio blog). Una delle problematiche
più comuni per il controllo di Login proposto da M.S. e di generare e gestire altri messaggi
in caso di Fallita Login.

A tal propostio può essere utilie ricordare quali sono gli eventi che concorrono per la login
protected void LoginPanel_LoggedIn(object sender, EventArgs e)
{
// generata a Login Effettuata
// comdoda da usare se serve salvare
// qualche informazione in sessione
}

protected void LoginPanel_LoggingIn(object sender,
LoginCancelEventArgs e)
{
//
// generata durante la login
//
if ( condizione1 == false)
{
LoginPanel_LoginError("1", new EventArgs());
e.Cancel = true;
return;
}
if ( condizione2 == false)
{
LoginPanel_LoginError("2", new EventArgs());
e.Cancel = true;
return;
}
if ( condizione3 == false)
{
LoginPanel_LoginError("3", new EventArgs());
e.Cancel = true;
return;
}
}

protected void LoginPanel_LoginError(object sender, EventArgs e)
{
//
// da invocare in caso di errore
// o invocata in caso di errore...
//
if (sender.ToString() == "1")
{
CustomValidator vldLoginFailed =
(CustomValidator)LoginUser.FindControl("cstErrore1");
vldLoginFailed.IsValid = false;
}
// per tutti e tre i casi
}


Questo è quanto necessario riportare nel tag LayoutTemplate

<asp:CustomValidator id="cstErrore1" 
runat="server" ErrorMessage="messaggio 1"
ValidationGroup="LoginUserValidationGroup"
Visible="false" />

<asp:CustomValidator id="cstErrore2"
runat="server" ErrorMessage="messaggio 2"
ValidationGroup="LoginUserValidationGroup"
Visible="false" />

<asp:CustomValidator id="cstErrore3"
runat="server" ErrorMessage="messaggio 3"
ValidationGroup="LoginUserValidationGroup"
Visible="false" />

<asp:ValidationSummary
ID="LoginUserValidationSummary" runat="server"
ValidationGroup="LoginUserValidationGroup"
HeaderText="Login Fallita:"/>


E questa è la dichiarazione del nostro pannello di login

<asp:Login ID="LoginPanel" runat="server" 
EnableViewState="True"
RenderOuterTable="True"
OnLoggedIn="LoginPanel_LoggedIn"
OnLoggingIn="LoginPanel_LoggingIn"
OnLoginError="LoginPanel_LoginError">



Questa non troppo complessa struttura ci consente di effettuare delle verifiche prima che la login sia realmente avvenuta e di comunicare all'utente che cosa ha sbagliato o perchè non può loggarsi

Nessun commento: