visual usuario que por nombre mostrar logueado definicion control buscar c# asp.net web-applications webforms

usuario - que es un control c#



cómo mostrar el nombre de usuario en el control de nombre de inicio de sesión (2)

Acabo de tener este mismo problema. Usando autenticación de formularios y una configuración similar a la OP.

Para resolver esto, hice lo siguiente en mi aplicación:

using System.Web.Security;

y luego para establecer el LoginName:

FormsAuthentication.SetAuthCookie(usr.Username, false);

Tengo lo siguiente en mi web.config:

<authentication mode="Forms"> <forms loginUrl="~/Login.aspx" protection="All" timeout="30" name=".ASPXAUTH" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/Default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/> </authentication> <authorization> <deny users="?"/> </authorization>

Perdón por responder a una publicación anterior pero mi búsqueda de respuestas me llevó hasta que la descubrí por mí misma ...

Tengo una página maestra que contiene el contenido de la sesión de inicio de sesión que aparece en todas las páginas posteriores basadas en la página maestra. Tengo un control de nombre de usuario también anidado en la vista de inicio de sesión para mostrar el nombre del usuario cuando están conectados. El código para la vista de inicio de sesión desde la página maestra se muestra de la siguiente manera:

<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> <%--&nbsp;&nbsp; [&nbsp;<asp:LoginStatus ID="MasterLoginStatus" runat="server" LogoutAction="Redirect" LogoutPageUrl="~/Logout.aspx" />&nbsp;]&nbsp;&nbsp;--%> </div>

Dado que VS2010 se inicia con una página de inicio de sesión predeterminada 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. encuentre el código para el control de inicio de sesión a continuación:

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

Luego escribí mi propio código para la autenticación ya que tenía mi propia base de datos. A continuación, se 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 perfectamente y la página se 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.

Al observar de cerca, también noté 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 que esto funcione como esperaba? Por favor ayuda....


Lo que sé es que los controles de inicio de sesión están destinados a la obtención de datos del proveedor de membresía. Pero ya que está usando su propio sistema de inicio de sesión. No puede obtener controles de inicio de sesión para mostrar datos.

Si desea permitir que los Controles de inicio de sesión muestren datos automáticamente, utilice Clases de membresía.

http://msdn.microsoft.com/en-us/library/tw292whz.aspx

o si desea tener su propio sistema de inicio de sesión Entonces cree un proveedor de membresía personalizado implementando el Proveedor de miembro de clase abstracta. aquí hay un buen recurso en eso

http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

Otra forma es actualizar manualmente la información del usuario en los controles si no desea usar el proveedor de membresía.