Справочная информация. У меня есть приложение webForm, которое регистрирует пользователя в базе данных на основе информации, предоставленной веб-службой, автоматически генерирует случайный пароль и имя пользователя и отправляет пользователю по электронной почте ссылку для принятия приложения на основе выбранная маркетинговая компания.
Вопросы:
- Как получить, чтобы только зарегистрированные в данный момент группы пользователей отображались в MarketingCo_DropDownList
Каждый пользователь, которому разрешен доступ к системе, будет иметь членство как минимум в одной из маркетинговых групп, как определено в web.config. Например, пользователь, который в настоящее время вошел в систему и принадлежит к группе BIG в расположении "alg \ ACOMP_user_BIG", сможет видеть только BIG в раскрывающемся списке Маркетинговой компании. Пользователь, который в настоящее время вошел в систему и принадлежит к группе NIS, расположенной в «alg \ ACOMP_user_NIS», сможет видеть только NIS в раскрывающемся списке Маркетинговой компании.
Вот скриншот внешнего интерфейса:
Вот мое лучшее предположение (находится в методе Private Sub GetMarketingCompanies () в default.aspx.vb):
If InStr(WindowsIdentity.GetCurrent().Groups = "AMG", item.MarketingCompanyShort = "AMG", CompareMethod.Text) Then
marketingCo.Items.Add(String.Format("{0} | {1}", item.MarketingCompanyShort, item.MarketingCompanyName))
For Each item In ac1
marketingCo.Items.Add(String.Format("{0} | {1}", item.MarketingCompanyShort, item.MarketingCompanyName))
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
Я исключаю код из Учебное пособие по аутентификации Windows в Wrox , но оно недостаточно полно для того, что я пытаюсь сделать.
Файл 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 с методами GetMarketingCompanies () и Page_Load (), где приложение извлекает MarketingCompanies из веб-службы и загружает его в раскрывающийся список через массив:
Private Sub GetMarketingCompanies()
Try
Dim ac1 As Array
ac1 = proxy.GetMarketingCompanyNames("acompUser", "acompPass!")
' If InStr(WindowsIdentity.GetCurrent().Groups = "AMG", item.MarketingCompanyShort = "AMG", CompareMethod.Text) Then
' marketingCo.Items.Add(String.Format("{0} | {1}", item.MarketingCompanyShort, item.MarketingCompanyName))
' if current user role="alg\ACOMP_user_BIG" display BIG MarketingCo.Item '
' if current user role="alg\ACOMP_user_NIS" display NIS MarketingCo.Item '
' if current user role="alg\ACOMP_user_GLA" display GLA MarketingCo.Item '
' if current user role="alg\ACOMP_user_PIP" display PIP MarketingCo.Item '
' if current user role="alg\ACOMP_user_PSM" display PSM MarketingCo.Item '
' if current user role="alg\ACOMP_user_PAM" display PAM MarketingCo.Item '
' if current user role="alg\ACOMP_user_ANN" display ANN MarketingCo.Item '
' if current user role="alg\ACOMP_user_AAM" display AAM MarketingCo.Item '
' if current user role="alg\ACOMP_user_MWM" display MWM MarketingCo.Item '
' if current user role="alg\ACOMP_user_GIM" display GIM MarketingCo.Item '
' if current user = alg\ACOMP_user_Admin display all marketing companies in drop down list '
For Each item In ac1
marketingCo.Items.Add(String.Format("{0} | {1}", item.MarketingCompanyShort, item.MarketingCompanyName))
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
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, в котором определен раскрывающийся список marketingCo:
<table>
<tr>
<td class="style3">
Marketing Co (auto-populated):
</td>
<td bgcolor="#ffffff" class="style8">
<asp:DropDownList ID="marketingCo" runat="server" Height="23px"
Width="250px">
</asp:DropDownList>
</td>
</tr>
<td bgcolor="#ffffff" class="style6">
<asp:Button ID="Send_Button" runat="server" Text="Send Invitation" />
</td>
</tr>
</table>
Веб-служба возвращает массив строк с MarketingCompanyShort и MarketingCompanyName, которые добавляются в качестве элементов в раскрывающийся список.
Код XSD-файла веб-службы:
<xs:element name="ArrayOfMarketingCompany" type="tns:ArrayOfMarketingCompany" nillable="true"/>
<xs:complexType name="MarketingCompany">
<xs:sequence>
<xs:element name="MarketingCompanyId" type="xs:int" minOccurs="0"/>
<xs:element name="MarketingCompanyName" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="MarketingCompanyShort" type="xs:string" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
Спасибо за внимание!
Если у вас есть полезные ссылки или предложения, я проголосую за вас!