3

我正在这里开发一个关于 ASP.NET MVC4 和 WebAPI 的项目,其中所有内容都将通过 ajax WebAPI 调用进行。所以正如预期的那样,在我的项目中,所有的业务逻辑都是在 WebAPI 上实现的,从登录系统开始。

我需要解决的场景与用户登录有关。我已经实现并且运行良好。但是新的要求要我在这个现有的 WebAPI 登录系统上实现一个安全机制,以防止同时使用相同的凭据登录系统。​我必须在这里实现的是我必须为给定的凭据包含独占登录,以便在某人使用该凭据登录时没有其他用户可以登录。

如何解决所有场景,例如检测用户是否已登录/检测用户注销,以便凭据现在可用于登录,其中还包括用户不正确退出系统,因为浏览器崩溃或计划外关闭或网络断开连接。

我该如何实施?我没有使用任何会员提供商。身份验证是针对 Active Directory 完成的。

4

1 回答 1

0

由于您在 Active Directory 中使用表单身份验证,因此只要您将 ActiveDirectoryMembershipProvider 指定为您的提供程序类型,您就应该仍然能够使用常规提供程序方法。在您的登录方法中,您可以使用

var user=Membership.GetUser(userName);
if(!user.IsOnline)
    //Do some login stuff

在您的网络配置中,您将希望拥有

 <membership defaultProvider="ADMembershipProvider">
  <providers>
    <add
       name="ADMembershipProvider"
       type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0,
         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
       connectionStringName="ADConnectionString"
       connectionUsername="MyDomain\MyADUserName"
       connectionPassword="MyADPassword"
       enablePasswordReset="false"
       attributeMapUsername="sAMAccountName"/>
  </providers>
</membership>

只需填写您需要的正确部分,它应该可以正常工作。

确保您还有一个用于 AD 控制器的连接字符串

<add name="ADConnectionString" connectionString="LDAP://MyADMachine/DC=MyDomain,DC=MyTLD" />
于 2013-04-08T02:29:14.333 回答