2011-01-10 5 views
5

मेरे पास एक मास्टर पेज है जो मास्टर पेज के आधार पर आने वाले सभी पृष्ठों पर लॉगिनव्यू सामग्री रखता है। मैं एक उपयोगकर्ता नाम नियंत्रण भी उपयोगकर्ता का नाम प्रदर्शित करने के लिए जब वे लॉग इन कर रहे हैं loginview में नेस्ट है मास्टर पृष्ठ से loginview के लिए कोड प्रदर्शित किया जाता है इस प्रकार है:।लॉगिन नाम नियंत्रण में उपयोगकर्ता नाम प्रदर्शित करने के लिए कैसे करें

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

के बाद से VS2010 एक डिफ़ॉल्ट के साथ लॉन्च किया खाता फ़ोल्डर में लॉगिन पेज, मैंने पृष्ठ में एक अलग लॉग बनाने के लिए जरूरी नहीं सोचा था, इसलिए मैंने पृष्ठ में एक ही लॉग का उपयोग किया था। कृपया नीचे लॉगिन नियंत्रण के लिए कोड पाएं:

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

तब मैंने प्रमाणीकरण के लिए अपना कोड लिखा क्योंकि मेरा अपना डेटाबेस था। निम्नलिखित प्रदर्शित करता है लॉगिन बटन में कोड घटना .:

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


    } 

मेरे प्रमाणीकरण पूरी तरह से काम करता है और पेज नामित गंतव्य के लिए रीडायरेक्ट कर दिया जाता क्लिक करें। हालांकि, लॉगिन दृश्य उपयोगकर्ता नाम प्रदर्शित नहीं करता है। मैं वास्तव में उन उपयोगकर्ताओं के नाम को पारित करने का तरीका नहीं समझ सकता जिन्हें मैंने डेटाबेस से लॉगिन नाम नियंत्रण में प्रदर्शित किया था।

एक करीबी नज़र डालने पर मैंने लॉगआउट टेक्स्ट भी देखा जो सफल लॉग इन के बाद प्रदर्शित होना चाहिए। जो मुझे आश्चर्यचकित करता है कि क्या मास्टरपेज पर लॉग इन टेम्पलेट नियंत्रण भी सभी पर या फिर भी अज्ञात टेम्पलेट नियंत्रण प्रदर्शित करता है जो प्रदर्शित करता रहता है।

मुझे उम्मीद के अनुसार काम करने के लिए कैसे मिलता है? कृपया मदद करें ....

उत्तर

2

मुझे क्या पता है कि लॉगिन नियंत्रण सदस्यता प्रदाता से डेटा प्राप्त करने के लिए बाध्य हैं। लेकिन चूंकि आप अपनी लॉगिन प्रणाली का उपयोग कर रहे हैं। यह डेटा दिखाने के लिए लॉगिन नियंत्रण नहीं मिल सकता है।

आप अनुमति देना चाहते हैं लॉग इन स्वचालित रूप से तो उपयोग सदस्यता वर्ग

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

या यदि आप अपने खुद के लॉगिन प्रणाली तो सार कक्षा MembershipProvider को लागू करने से एक कस्टम सदस्यता प्रदाता बनाएं करना चाहते हैं डेटा दिखाने के लिए नियंत्रित करता है। यहाँ कि

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

एक और तरीका है पर एक अच्छा संसाधन नियंत्रण पर उपयोगकर्ता जानकारी मैन्युअल रूप से अद्यतन करने के लिए आप सदस्यता प्रदाता का उपयोग नहीं करना चाहते हैं ..

0

मैं सिर्फ यह एक ही मुद्दा आया था । प्रपत्र प्रमाणीकरण और ओपी के लिए एक समान सेटअप का उपयोग करना।

इसके समाधान के लिए मैं अपने ऐप्लिकेशन में निम्नलिखित किया:

using System.Web.Security; 

और फिर LOGINNAME स्थापित करने के लिए:

FormsAuthentication.SetAuthCookie(usr.Username, false); 

मैं अपने 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> 

पुरानी पोस्ट का जवाब देने के लिए खेद है, लेकिन उत्तर के लिए मेरी खोज ने मुझे तब तक नेतृत्व किया जब तक कि मैंने इसे अपने लिए खोज नहीं लिया ...

संबंधित मुद्दे