我有一个连接用户与Windows身份验证的互联网应用程序,当用户来到办公室并登录到Windows会话(与AD信息)时,他们自动登录到web应用程序,我使用Windows authentication
来实现这一点。
所以当我使用@User.Identity.Name
时,它显示用户名。现在如果我想对用户名做一些事情,比如Roles.AddUserToRole(username, "RoleName");
,它会抛出一个异常The user 'Domainuser' 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> </span>
<input type="submit" value="Enregister" class="submit" />
</p>
</div>
}
My controller:
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");
}
我的网页。配置:
<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>
错误出在成员提供程序上。
类型:
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_ -实施- role_2d00_based -安全- - - - - - - asp.net 2.0 -使用- windows -验证-和- sql - server.aspx
还更改其他提供者:对于角色,我使用SQLRoleProvider,因此类型为:System.Web.Security.SqlRoleProvider
,对于配置文件,我使用:type="System.Web.Security.SqlProfileProvider"