デフォルトのASP.Net MVC 5アプリケーションを設定したので、以下のスニペットがSignInManagerを呼び出す理由を理解できません。コントローラに[Authorize]属性がある場合、このSignInManagerコールの目的は何ですか?
[承認]属性を持つManageControllerにあります。私は、認証されたユーザーを検索whenverユーザーがnullで、そうでない場合ならば、私はチェックすなわち、このステップを繰り返す必要があり、場合、私は疑問に思って
//
// POST: /Manage/RemoveLogin
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> RemoveLogin(string loginProvider, string providerKey)
{
ManageMessageId? message;
var result = await UserManager.Get().RemoveLoginAsync(User.Identity.GetUserId<int>(), new UserLoginInfo(loginProvider, providerKey));
if (result.Succeeded)
{
var user = await UserManager.Get().FindByIdAsync(User.Identity.GetUserId<int>());
if (user != null)
{
await SignInManager.Get().SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
message = ManageMessageId.RemoveLoginSuccess;
}
else
{
message = ManageMessageId.Error;
}
return RedirectToAction("ManageLogins", new { Message = message });
}
は、SignInAsyncを待っています。 編集:ユーザーがnullであるかどうかを確認し、それがあるあれば、今すぐSignInAsync
を待って、私は私が[承認]属性を与えてくれたことを、新しいコントローラを作成し、インデックス()関数できましたコントローラの、私は:
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId<int>());
を私は2つのタブでそのページをロードする場合、それらのいずれかにサインアウトしてからページを更新し、私はログイン画面にリダイレクトされています。私はデバッガを付けて、SignInManagerがヒットしたケースを引き起こすことができませんでした。
どのような場合、ユーザーはnullではないでしょうか?
私は[IUserLoginStore](https://github.com/aspnet/Identity/blob/dev/src/Microsoft.Extensions.Identity.Core/IUserLoginStore.cs)を完全に公平に理解していません。スニペットは、リクエストのユーザのログインを削除します。リクエストのユーザは、そのユーザが現在使用しているログインになります。 'SignInManager'を呼び出すと、影響を受けたユーザーは認証された状態(サインインされた状態)のままになります。最後のログインを削除すると、事実上ログオフされます。その場合、サインイン(認証)されますが、おそらく承認されなくなります。 – ckerth