2

我正在创建一个需要 Windows 身份验证的 Intranet 网站。我已经设置了一切,或者我想我已经设置了,以使用数据库中管理的 Windows 身份验证和角色。这很重要,因为我不能使用 Active Directory 组和角色。

有用。当我进入网站时,它会显示我的 Windows 用户名,并且可以使用User.Identity.Name. 我可以使用验证角色User.IsInRole("roleName"),它也可以工作。

现在我遇到的问题是,当我使用时Membership.GetUserMembership.GetAllUsers我总是得到 null 和一个空集合。

我的 RoleManager 提供者是:

<add 
name="SqlRoleManager" 
type="System.Web.Security.SqlRoleProvider" 
connectionStringName="ApplicationServices" 
applicationName="/appName" 
/>

我的会员提供者是这个:

<add 
name="AspNetSqlMembershipProvider" 
type="System.Web.Security.SqlMembershipProvider" 
connectionStringName="ApplicationServices" 
applicationName="/appName" 
/>

我错过了什么还是我的配置有问题?谢谢!

4

1 回答 1

2

Why do you want to call Membership.GetUser? You are already authenticated via Windows Authentication. If you want to use Membership with Windows Authentication (why, i don't know), you have to jump through some more hoops.

You can use the ActiveDirectoryMembershipProvider, rather than SqlMembershipProvider. This lets you call GetUser and retrieve AD information.

You can copy the Windows Authentication information into a SqlMembership database on login.

You can create a custom membership provider that allows you to do all the authentication yourself.

So, the first question is why do you want to use Membership?

于 2012-10-22T16:56:24.870 回答