2011-01-10 52 views
5

Tôi có trang chính chứa nội dung đăng nhập xuất hiện trên tất cả các trang tiếp theo dựa trên trang chính. tôi đã kiểm soát một tên cũng lồng trong loginview để hiển thị tên của người dùng khi họ đăng nhập vào các mã cho loginview từ trang chủ sẽ được hiển thị như sau:.cách hiển thị tên người dùng trong kiểm soát tên đăng nhập

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

Kể từ VS2010 ra mắt với một mặc định đăng nhập trang trong thư mục tài khoản, tôi không nghĩ rằng nó cần thiết để tạo ra một trang đăng nhập riêng biệt, vì vậy tôi chỉ sử dụng cùng một trang đăng nhập. vui lòng tìm mã cho điều khiển đăng nhập bên dưới:

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

Sau đó tôi đã viết mã của riêng mình để xác thực vì tôi có cơ sở dữ liệu riêng. sau đây sẽ hiển thị mã trong các sự kiện nhấp vào nút đăng nhập .:

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(); 
     } 


    } 

Xác thực của tôi hoạt động hoàn hảo và trang được chuyển hướng đến đích được chỉ định. Tuy nhiên, chế độ xem đăng nhập không hiển thị tên người dùng. tôi thực sự không thể tìm ra cách để vượt qua tên người dùng mà tôi đã chọn từ cơ sở dữ liệu để kiểm soát tên đăng nhập được hiển thị.

xem xét kỹ tôi cũng nhận thấy văn bản đăng xuất sẽ được hiển thị sau khi đăng nhập thành công không hiển thị. điều đó khiến tôi băn khoăn liệu việc kiểm soát mẫu đăng nhập trên trang chủ thậm chí có cháy hay không, hoặc nó vẫn là điều khiển mẫu ẩn danh sẽ tiếp tục hiển thị.

Tôi làm cách nào để hoạt động như mong đợi? Xin hãy giúp đỡ ....

Trả lời

2

Điều tôi biết là các điều khiển đăng nhập bị ràng buộc để Tìm nạp dữ liệu từ nhà cung cấp thành viên. Nhưng vì bạn đang sử dụng Hệ thống Đăng nhập của riêng bạn. Nó không thể có được điều khiển đăng nhập để hiển thị dữ liệu.

Nếu bạn muốn cho phép nhập Controls để hiển thị dữ liệu tự động sau đó sử dụng Membership Lớp

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

hoặc nếu bạn muốn có hệ thống đăng nhập của bạn Sau đó Tạo một nhà cung cấp thành viên Tùy chỉnh bằng cách thực hiện Tóm tắt Lớp MembershipProvider. heres một nguồn lực tốt trên đó

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

Một cách khác là để cập nhật thông tin người dùng bằng tay trên các điều khiển nếu bạn không muốn sử dụng cung cấp thành viên ..

0

Tôi chỉ có vấn đề này cùng đi lên . Sử dụng xác thực Mẫu và thiết lập tương tự với OP.

Để giải quyết này, tôi đã làm như sau trong ứng dụng của tôi:

using System.Web.Security; 

và sau đó thiết lập các LOGINNAME:

FormsAuthentication.SetAuthCookie(usr.Username, false); 

Tôi có sau trong web.config của tôi:

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

Xin lỗi vì đã trả lời bài đăng cũ nhưng tìm kiếm câu trả lời của tôi đã dẫn tôi đến đây cho đến khi tôi tự khám phá nó ...

Các vấn đề liên quan