首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows身份验证和SQLRoleProvider MVC3

Windows身份验证和SQLRoleProvider MVC3
EN

Stack Overflow用户
提问于 2013-06-04 16:54:35
回答 1查看 1.2K关注 0票数 1

我有一个互联网应用程序,它将用户与Windows身份验证连接起来,当用户来到办公室并登录到Windows会话(使用AD信息)时,他们会自动登录到web应用程序,我使用Windows authentication来实现这一点。

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

我的观点是:

代码语言:javascript
复制
 @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>
}

我的控制器:

代码语言:javascript
复制
 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:

代码语言:javascript
复制
  <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>
EN

回答 1

Stack Overflow用户

发布于 2013-06-04 21:37:05

错误出在会员的提供者身上。

类型:

代码语言:javascript
复制
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"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16913559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档