ASP.NET VB.NET - Как заполнить Active Directory, зарегистрированный под именем текущего пользователя, в поле текстового поля - PullRequest
0 голосов
/ 16 апреля 2011

Справочная информация. У меня есть приложение webForm, которое регистрирует пользователя в базе данных на основе информации, предоставленной веб-службой, автоматически генерирует случайный пароль и имя пользователя и отправляет пользователю по электронной почте ссылку для принятия приложения на основевыбранная маркетинговая компания.

Вопрос:

  • Как заполнить поле MarketerName_TextBox текущим вошедшим в систему именем пользователя (это User.Identity.Name и добавить эту строку?на конце aspx.vb или на конце aspx?)

Вот скриншот внешнего интерфейса: web app screenshot

Я отключил код от Wrox'sУчебное пособие по аутентификации Windows , но оно недостаточно для того, что я пытаюсь сделать.

файл web.config:

файл web.config (отображается только соответствующий код):

 <authentication mode="Windows"/>
   <authorization>

    <allow users="alg\bmccarthy, alg\phoward" />               
    <allow roles="alg\ACOMP_user_Admin" />
    <allow roles="alg\ACOMP_user_AMG" />
    <allow roles="alg\ACOMP_user_BIG" />
    <allow roles="alg\ACOMP_user_NIS" />
    <allow roles="alg\ACOMP_user_GLA" />
    <allow roles="alg\ACOMP_user_PIP" />
    <allow roles="alg\ACOMP_user_PSM" />
    <allow roles="alg\ACOMP_user_PAM" />
    <allow roles="alg\ACOMP_user_ANN" />
    <allow roles="alg\ACOMP_user_AAM" />
    <allow roles="alg\ACOMP_user_MWM" /> 
    <allow roles="alg\ACOMP_user_GIM" />
    <deny users="*" />        
</authorization> 

   <bindings>
   <basicHttpBinding>
    <binding name="BasicHttpBinding_IAcompService" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
          <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
  <client>
  <endpoint address="http://172.17.1.40/aCompService.svc" binding="basicHttpBinding"
    bindingConfiguration="BasicHttpBinding_IAcompService" contract="aComp_ServiceReference.IAcompService"
    name="BasicHttpBinding_IAcompService" />
  </client>
 </system.serviceModel>

код default.aspx.vb с txtMarketerName_TextChanged () иPage_Load () Методы:

Private Sub GetCarriers()
    Dim ac1 As Array
    ac1 = proxy.GetCarrierNames("test", "test")
    For Each item In ac1
        lbCarriers.Items.Add(String.Format("{0} | {1} | {2}", item.CarrierID, item.CarrierNameLong, item.CarrierNameShort))
    Next
End Sub

Private Sub txtMarketerName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMarketerName.TextChanged

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load, Me.Load, Me.Load

    If Not lbCarriers.Items.Count > 0 Then
        GetCarriers()
        GetMarketingCompanies()
    End If

End Sub

код default.aspx, в котором отображается текстовое поле для имени маркетолога:

<table id="Table1" border="0" cellpadding="6" cellspacing="0" align=center>
    <tr>
        <td class="style1">
            My Name (auto-populated Current Logged In User's Name): </td>
        <td bgcolor="#ffffff" class="style6">
            <asp:TextBox ID="txtMarketerName" runat="server" Width="250px">    
        </asp:TextBox>
        </td>
        <td bgcolor="#ffffff" class="style2">
            <asp:RequiredFieldValidator ID="regValMarketerName" runat="server"
ControlToValidate="txtMarketerName" ErrorMessage="Marketer Name is required" Text="*"
ValidationGroup="Valtxt">
        </asp:RequiredFieldValidator>
        </td>
    </tr>

Спасибо за внимание!

Если у вас есть полезные ссылки или предложения, я проголосую за вас!

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Вы можете установить значение метки или текстового поля для имени пользователя текущего пользователя Windows в коде, указанном в evemt Page_Load, например:

txtUsername.Text = User.Identity.Name;

Или вы можете сделать это в разметке так:

<asp:Label runat="server" ID="lblUsername"><%=User.Identity.Name %></asp:Label>
0 голосов
/ 20 апреля 2011

Вот то, что я использовал в конце на странице кода deafult.aspx.vb:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load, Me.Load, Me.Load

    If Not lbCarriers.Items.Count > 0 Then
        txtMarketerName.Text = WindowsIdentity.GetCurrent.Name
        GetCarriers()
        GetMarketingCompanies()
    End If

End Sub

WindowsIdentity.GetCurrent (). Имя и имя пользователя. Идентификатор. Имя

Метод WindowsIdentity.GetCurrent () возвращает экземпляр WindowsIdentity, который представляет удостоверение, выполняющее поток. Объект User.Identity представляет идентификатор, который был передан из IIS. Если IIS позволяет пользователю осуществлять анонимный доступ к странице, свойство User.Identity.Name возвращает пустую строку. В противном случае он вернет имя учетной записи пользователя, аутентифицированного IIS.

User.Identity.Name - Возвращает: my_domain \ jdoe

System.Environment.UserName Возвращает: jdoe

...