0

ログイン画面があるMVCアプリケーションを1つ作成しています。ユーザーが正常にログインすると、ホーム画面が表示されます。この時点で、別のブラウザーで URL を開くと、ユーザーは既にログインしています。私が望むのは、別のブラウザーで URL を開くとログイン画面が表示されることです。

これは私の LoginController インデックス メソッドです。

[AllowAnonymous]
public ActionResult Index()
{
   return View();
}  

これはログイン機能です:

[HttpPost]
[AllowAnonymous]
public ActionResult LogIn(string email, string password)
{  
}  

web.config には次のものがあります。

<authentication mode="Forms">
    <forms loginUrl="~/Login/LogIn" timeout="2880" />
</authentication>  
4

2 に答える 2

1

フォーム認証では、Cookie を使用して認証済みユーザーを追跡します。Cookie はブラウザの画面やタブ間で共有されます。これは、すべてのブラウザが動作する方法であり、完全に予想される動作です。すべての主要な Web サイトで同じ動作が見られます。

それを実現したい場合は、組み込みのフォーム認証メカニズムに依存せずに、認証されたユーザーを追跡する独自の方法を考案する必要があります。IIRC フォーム認証では、現在認証されているユーザーを URL に送信することもできますが、これが ASP.NET MVC ルーティングでうまく機能するかどうかはわかりません。

<authentication mode="Forms">
  <forms loginUrl="~/Login/LogIn" timeout="2880" cookieless="UseUri" />
</authentication>
于 2013-07-22T07:30:07.337 に答える
0

ホーム画面はログインしているユーザーのみが利用できるようにする必要があるため[AllowAnonymous]、ホーム画面のアクション ( ?) を削除して属性Indexを追加する必要があります。[Authorize]ユーザーがログインせずにここに移動しようとすると、標準のフォーム認証プロセスを介してログイン画面にリダイレクトされます。

ログイン ビューをアプリケーションの既定のビューにする必要がありますか? その場合は、LoginController LogInアクションにマップする空の URL のルートを追加する必要があります。

于 2013-07-22T07:30:04.687 に答える