Tek sayfalı bir uygulama oluşturuyorum ve sahtecilik karşıtı belirteçlerle ilgili bir sorun yaşıyorum.
Sorunun neden olduğunu biliyorum, nasıl düzelteceğimi bilmiyorum.
Aşağıdakiler olduğunda hatayı alıyorum:
- Oturum açmamış kullanıcı bir iletişim kutusu yükler (oluşturulan bir sahtecilik önleme belirteci ile)
- Kullanıcı iletişim kutusunu kapatır
- Kullanıcı oturum açar
- Kullanıcı aynı iletişim kutusunu açar
- Kullanıcı formu iletişim kutusunda gönderir
Sahteciliğe karşı koruma belirteci "" kullanıcı içindir, ancak mevcut kullanıcı "kullanıcı adı" dır
Başvurum% 100 tek sayfadır ve bir kullanıcı başarıyla bir ajax posta yoluyla açtığında çünkü Böyle nedeni /Account/JsonLogin
, ben sadece sunucusundan döndürülen "doğrulanmış görünümler" ile mevcut görüşleri dışarı geçiş ancak yeniden yok sayfa.
Bunun sebebinin bu olduğunu biliyorum, çünkü sayfayı 3. ve 4. adımlar arasında basitçe yeniden yüklersem hata olmaz.
Öyleyse @Html.AntiForgeryToken()
, yüklenen formda, sayfa yeniden yüklenene kadar eski kullanıcı için hala bir jeton döndürdüğü görülüyor .
@Html.AntiForgeryToken()
Yeni, kimliği doğrulanmış kullanıcı için bir jeton döndürmek üzere nasıl değişiklik yapabilirim ?
Yeni enjekte GenericalPrincipal
özel bir ile IIdentity
her üzerinde Application_AuthenticateRequest
zaman öylesine @Html.AntiForgeryToken()
çağrılan HttpContext.Current.User.Identity
ile benim özel kimlik aslında, IsAuthenticated
henüz özelliği true seti ve @Html.AntiForgeryToken
hala bir sayfa yeniden yapmanız sürece eski kullanıcı için belirteç hale görünüyor.