3

ここでは、Ajax WebAPI 呼び出しですべてが実行される ASP.NET MVC4 と 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 に答える