ASP.NET Web表单身份验证角色未返回

时间:2015-02-19 04:34:40

标签: asp.net active-directory web-config asp.net-membership

我有一个asp.net应用程序,只有当用户通过Active Directory Group" Admin"进行访问时才可用。如果未经过身份验证,应用程序将调用Account / Login.aspx文件。我遇到一个问题,即身份验证后没有任何角色从我的登录状态返回。

以下是我的Web.Config

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="10" path="/" />
</authentication>
<authorization>
  <allow roles="Admin"/>
  <deny users="*"/>
</authorization>

<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
  <providers>
    <add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider,System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString" attributeMapUsername="sAMAccountName" connectionUsername="username" connectionPassword="password" connectionProtection="None" />
  </providers>
</membership>
<roleManager enabled="true"/>

我在我的site.Master中放了一些代码,用于显示用户以及是否在角色中。

    lblUserName.Text = "Hello " + Context.User.Identity.Name + ".";
    lblAuthType.Text = "Is Admin? " + Context.User.IsInRole("Admin").ToString();

返回值是Hello Name是Admin?假

记录时,只要输入错误的ID和密码,编辑就可以正常工作。此外,在调试时,我查看Context.User for Roles,值为Blank。

感谢任何帮助。


*每个回复的跟进:*

我在web.config中插入了这个

  <roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false">
      <providers>
        <add
          name="WindowsProvider"
          type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>

代码

  

lblAuthType.Text =&#34;是管理员吗? &#34; + Context.User.IsInRole(&#34; Admin&#34;)。ToString();

错误消息:

仅当用户名参数与当前Windows标识中的用户名匹配时,才支持

方法。

堆栈跟踪

[ProviderException: Method is only supported if the user name parameter matches the user name in the current Windows Identity.]
   System.Web.Security.WindowsTokenRoleProvider.GetCurrentWindowsIdentityAndCheckName(String userName) +2256845
   System.Web.Security.WindowsTokenRoleProvider.GetCurrentTokenAndCheckName(String userName) +36
   System.Web.Security.WindowsTokenRoleProvider.GetRolesForUser(String username) +61
   System.Web.Security.RolePrincipal.IsInRole(String role) +9864880
   DelegatePager.SiteMaster.Page_Init(Object sender, EventArgs e) in c:\Source\IMS Web Internal\DelegatePager\DelegatePager\Site.Master.cs:55
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnInit(EventArgs e) +92
   System.Web.UI.UserControl.OnInit(EventArgs e) +83
   System.Web.UI.Control.InitRecursive(Control namingContainer) +134
   System.Web.UI.Control.InitRecursive(Control namingContainer) +290
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +489

0 个答案:

没有答案