首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC3内联网成员

MVC3内联网成员
EN

Stack Overflow用户
提问于 2012-09-17 13:14:17
回答 1查看 648关注 0票数 4

我正在构建一个MVC3 Intranet应用程序,它使用连接到Server的默认MembershipProvider、ProfileProvider和RoleProvider。如果使用窗体身份验证,角色提供程序将正确填充。当我切换到Windows身份验证时,角色提供程序不再填充。这是通过在代码中放置一个断点并查看"Roles.GetRolesForUser()“来测试的。我怀疑传递给数据库的userid是'DOMAIN\ userid‘(这是User.Identity.Name中的内容),而数据库中的仅仅是userid。

因为一切都是默认的,所以没有太多的代码可供发布。

代码语言:javascript
复制
<authentication mode="Windows" />
<authorization>
  <deny users="?"/>
</authorization>
  <membership defaultProvider="AspNetSqlMembershipProvider">
    <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
  <properties></properties>
</profile>
  <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider" cacheRolesInCookie="true">
    <providers>
    <clear />
    <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

我的第一个想法是,在将标识传递给成员资格提供程序之前,我们是否可以删除域,但是User.Identity.Name是唯一的。

什么是纠正这一问题的最佳途径,而不必将整个数据库更改为具有域\userid而不仅仅是userid?这可以不需要编写自定义成员资格/配置文件/角色提供程序来完成吗?

EN

回答 1

Stack Overflow用户

发布于 2012-10-09 23:21:36

如果您只想使用Windows,那么您不希望使用SqlRoleProvider,而是希望使用WindowsTokenRoleProvider,这将返回它们的AD角色。(没有理由使用成员资格提供程序,因为在使用Windows身份验证时,未经身份验证就无法访问站点)

如果您想使用Windows身份验证,但使用SqlRoles,那么您可能希望这样做:

Based-Security-with-ASP.NET-2.0-using-Windows-Authentication-and-SQL-Server.aspx

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

https://stackoverflow.com/questions/12459994

复制
相关文章

相似问题

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