エラーメッセージが意味することを理解していますが、クッキーは無効です。しかし、私はこのシナリオを優雅に扱おうとしています。'Window'から 'localStorage'プロパティを読み取ることができません
私はMVC Coreを使用していますが、ここでは何が起こるのですか? Googleなどのサードパーティ認証を使用しようとするとクッキーが無効になると、私のウェブサイトは白いページを読み込み、コントローラには決してヒットしません。クッキーが無効になっているかどうかを確認するためにコントローラをチェックしたかったのですが、それは決して遠くに届きません。
オンラインで掘り下げることで、Cookieが無効かどうかを確認する唯一の方法は、Cookieを設定し、別のページにリダイレクトしてCookieを読み取ることです。しかし、MVCコアでは、それを行うことさえできないようです。
ValidateAntiForgery
アトリビュートがAuthorizeFilter
であり、そのことを実行しようとしていて、クッキーを読み取れない可能性があります。しかし、ここで本当に奇妙なのは、私のグローバルなエラー処理がそれを捕まえないということです。私もエラーページを取得していない、私はちょうど白いページを取得します。
これを回避するには?
EDIT:
だから私が行っているテストはChromeでいたし、それが動作です。 IE 11でこれを試してみると、私はGoogleのページに私を蹴ります。なぜChromeはどうですか?
EDIT 2:
私はValidateAntiForgery
属性を削除した場合、私は何の問題もありません。
コード:
var schemes = await SchemeProvider.GetAllSchemesAsync();
var loginProviders = schemes.ToList();
if (loginProviders.Any())
{
<form id="form-login" asp-controller="Login" asp-action="ExternalLogin" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post">
@{
var provider = loginProviders.FirstOrDefault(t => t.Name.Equals("Google"));
}
@if (provider != null)
{
<input type="hidden" name="provider" value="@provider.Name"/>
}
</form>
}
OUTPUT:
<form id="form-login" method="post" action="/MySite/Login/ExternalLogin">
<input type="hidden" name="provider" value="Google">
<input name="__RequestVerificationToken" type="hidden" value="CfDJ8H5fggDmaa5Alubd0Uq6Sdi5ck0sJteuBr7cgnyqRX_x9_U4CTZzOB-2iiToQ6dyugjPgirRWnfazcgRXwvFIn5xMyLUVAd9wSG_CgLGtKWjgG0X8_SKfWwMFQiww3UfHHE04PPxbdIovktDrMu1BR4">
</form>
それをアクティブにするために、私はJavaScriptから簡単なonclickのを持っている:
$("#login").on('click', function (e) {
e.preventDefault();
$("#form-login").submit();
});
:
は、私は、この問題に関してで見つけgithubの上で発見された問題がいくつかあります。あなたが 'GET'でそれを使用しているなら、あなたは間違っています。 –
@CamiloTerevintoはい投稿に載っています。これはユーザーをGoogleにリダイレクトする投稿をしようとすると発生します。 – Bojan
何が起こっているのかを確認するためのコードとスクリーンショットを投稿してください。 –