【问题标题】:Windows Authentication and SQLRoleProvider MVC3Windows 身份验证和 SQLRoleProvider MVC3
【发布时间】:2013-06-04 08:54:34
【问题描述】:

我有一个通过 Windows 身份验证连接用户的 Internet 应用程序,当用户来到办公室并登录到 Windows 会话(使用 AD 信息)时,他们会自动登录到 Web 应用程序,我使用 Windows authentication 来实现这一点.

所以当我使用@User.Identity.Name它时会显示用户名。现在,如果我想用Roles.AddUserToRole(username, "RoleName");这样的用户名做一些事情,它会抛出异常The user 'Domain\user' was not found.

我的看法:

 @using (Html.BeginForm("AddToRH", "Account", FormMethod.Post))
{
<div class="form_settings">
    <p>
        <span>
            @User.Identity.Name
            @Html.Label("Username") :
        </span>
        @Html.Editor("username")

    </p>
    <p style="padding-top: 15px">
        <span>&nbsp;</span>
        <input type="submit" value="Enregister" class="submit" />
    </p>
</div>
}

我的控制器:

 public ActionResult AddToRH(string username) {
        string[] roles = Roles.GetAllRoles();
        Boolean contains = false;
        foreach (string role in roles)
        {
            if(role.Equals("RoleName")){
                contains=true;
            }
        }
        if (!contains) {
            Roles.CreateRole("RoleName");
        }            
        Roles.AddUserToRole(username, "RoleName");
        return RedirectToAction("Index","Home");
    }

我的 web.config :

  <authentication mode="Windows">

</authentication>
  <membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
  </providers>
</membership>

【问题讨论】:

    标签: asp.net-mvc-3 active-directory asp.net-membership


    【解决方案1】:

    错误在于会员资格的提供者。

    类型:

    System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"`
    

    默认随项目生成,不使用dbo.aspnet_X 表。这就是我认为我无法检索用户的原因。

    这是一篇对我帮助很大的文章:

    http://weblogs.asp.net/scottgu/pages/Recipe_3A00_-Implementing-Role_2D00_Based-Security-with-ASP.NET-2.0-using-Windows-Authentication-and-SQL-Server.aspx

    还更改其他提供程序:对于角色,我使用 SQLRoleProvider,因此类型为:System.Web.Security.SqlRoleProvider,对于我使用的配置文件:type="System.Web.Security.SqlProfileProvider"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      • 2012-01-28
      • 2012-08-08
      • 2011-10-20
      • 2011-10-09
      • 1970-01-01
      相关资源
      最近更新 更多