Tengo una página maestra que contiene el contenido de inicio de sesión que aparece en todas las páginas posteriores en función de la página maestra. Tengo un control de nombre de usuario también anidado en el LoginView para mostrar el nombre del usuario al que se registran en aparece el código de la LoginView desde la página principal de la siguiente manera:.cómo mostrar el nombre de usuario en el control de nombre de inicio de sesión
<div class="loginView">
<asp:LoginView ID="MasterLoginView" runat="server">
<LoggedInTemplate>
Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" />
<asp:Label ID="userNameLabel" runat="server" Text="Label"></asp:Label></span>!
[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Logout.aspx"/> ]
<%--Welcome:
<span class="bold"><asp:LoginName ID="MasterLoginName" runat="server" /> </span>!--%>
</LoggedInTemplate>
<AnonymousTemplate>
Welcome: Guest
[ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
</AnonymousTemplate>
</asp:LoginView>
<%-- [ <asp:LoginStatus ID="MasterLoginStatus" runat="server" LogoutAction="Redirect" LogoutPageUrl="~/Logout.aspx" /> ] --%>
</div>
Desde VS2010 lanza con un valor predeterminado página de inicio de sesión en la carpeta de cuentas, no creí necesario crear una página de inicio de sesión por separado, así que acabo de utilizar la misma página de inicio de sesión. Por favor, encontrar el código para el control de usuario abajo:
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
<LayoutTemplate>
<span class="failureNotification">
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</span>
<asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"
ValidationGroup="LoginUserValidationGroup"/>
<div class="accountInfo">
<fieldset class="login">
<legend style="text-align:left; font-size:1.2em; color:White;">Account Information</legend>
<p style="text-align:left; font-size:1.2em; color:White;">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User ID:</asp:Label>
<asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
CssClass="failureNotification" ErrorMessage="User ID is required." ToolTip="User ID field is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p style="text-align:left; font-size:1.2em; color:White;">
<asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">Password:</asp:Label>
<asp:TextBox ID="Password" runat="server" CssClass="passwordEntry"
TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p style="text-align:left; font-size:1.2em; color:White;">
<asp:CheckBox ID="RememberMe" runat="server"/>
<asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
</p>
</fieldset>
<p class="submitButton">
<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In"
ValidationGroup="LoginUserValidationGroup" onclick="LoginButton_Click"/>
</p>
</div>
</LayoutTemplate>
</asp:Login>
entonces me escribió mi propio código para la autenticación desde que tuve mi propia base de datos. las siguientes muestra el código en los botones de inicio de sesión, haga clic en evento .:
public partial class Login : System.Web.UI.Page
{
//create string objects
string userIDStr, pwrdStr;
protected void LoginButton_Click(object sender, EventArgs e)
{
//assign textbox items to string objects
userIDStr = LoginUser.UserName.ToString();
pwrdStr = LoginUser.Password.ToString();
//SQL connection string
string strConn;
strConn = WebConfigurationManager.ConnectionStrings["CMSSQL3ConnectionString"].ConnectionString;
SqlConnection Conn = new SqlConnection(strConn);
//SqlDataSource CSMDataSource = new SqlDataSource();
// CSMDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["CMSSQL3ConnectionString"].ToString();
//SQL select statement for comparison
string sqlUserData;
sqlUserData = "SELECT StaffID, StaffPassword, StaffFName, StaffLName, StaffType FROM Staffs";
sqlUserData += " WHERE (StaffID ='" + userIDStr + "')";
sqlUserData += " AND (StaffPassword ='" + pwrdStr + "')";
SqlCommand com = new SqlCommand(sqlUserData, Conn);
SqlDataReader rdr;
string usrdesc;
string lname;
string fname;
string staffname;
try
{
//string CurrentData;
//CurrentData = (string)com.ExecuteScalar();
Conn.Open();
rdr = com.ExecuteReader();
rdr.Read();
usrdesc = (string)rdr["StaffType"];
fname = (string)rdr["StaffFName"];
lname = (string)rdr["StaffLName"];
staffname = lname.ToString() + " " + fname.ToString();
LoginUser.UserName = staffname.ToString();
rdr.Close();
if (usrdesc.ToLower() == "administrator")
{
Response.Redirect("~/CaseAdmin.aspx", false);
}
else if (usrdesc.ToLower() == "manager")
{
Response.Redirect("~/CaseManager.aspx", false);
}
else if (usrdesc.ToLower() == "investigator")
{
Response.Redirect("~/Investigator.aspx", false);
}
else
{
Response.Redirect("~/Default.aspx", false);
}
}
catch(Exception ex)
{
string script = "<script>alert('" + ex.Message + "');</script>";
}
finally
{
Conn.Close();
}
}
Mi autenticación funciona a la perfección y la página se le redirecciona al destino designado. Sin embargo, la vista de inicio de sesión no muestra el nombre de los usuarios. De hecho, no puedo descifrar cómo pasar el nombre de usuario que elegí de la base de datos al control de nombre de inicio de sesión para que se muestre.
echando un vistazo También me di cuenta de que el texto de cierre de sesión que debería mostrarse después de iniciar sesión correctamente no se muestra. eso me deja preguntándome si el control de la plantilla registrada en la página maestra incluso se dispara o sigue siendo el control de la plantilla anónima que se sigue mostrando.
¿Cómo hago para que funcione como esperaba? Por favor ayuda ...