Anti sahte simge kullanıcı " içindir;" ancak geçerli bir kullanıcı "kullanıcı adı"
Tek sayfa bir uygulama bina ve sahte anti belirteçleri ile ilgili bir sorun yaşıyorum.
Sorun olmuyor neden ben sadece bunu düzeltmek için nasıl bilmiyorum biliyorum.
Aşağıdaki durumda bir hata alıyorum:
- Olmayan-giriş kullanıcı bir iletişim kutusu yükler (anti-sahte oluşturulan bir simge ile)
- Kullanıcı pencereyi kapatır
- Kullanıcı günlükleri
- Kullanıcı aynı iletişim kutusu açar
Kullanıcı iletişim formu gönderir
Anti forgery token is meant for user "" but the current user is "username"
Sebebi bu olur çünkü benim uygulama 0 tek sayfa, ve ne zaman bir kullanıcı başarıyla oturum açtıktan üzerinden bir ajax post için /Account/JsonLogin
, Ben sadece dışarı geçiş geçerli manzaralı "kimliği görüntüler" döndürülen sunucu amasayfayı yeniden yükleyin.
Bu basit ve 4, hata yok adım 3 arasında sayfayı yeniden yükleyin çünkü eğer sebebi olduğunu biliyorum.
Sayfayı yeniden kadar dolu şeklinde @Html.AntiForgeryToken()
hala eski kullanıcı için bir belirteç döndürür gibi görünüyor.
Nasıl @Html.AntiForgeryToken() to return a token for the new, authenticated user?
değiştirebilirim
Ben enjekte yeni bir GenericalPrincipal
özel IIdentity
*Her 7* o zaman @Html.AntiForgeryToken()
çağrılan HttpContext.Current.User.Identity
aslında benim özel Kimlik ile IsAuthenticated
özellik true ve henüz @Html.AntiForgeryToken
hala görünüyor oluşturmak için bir belirteç için eski kullanıcı sürece yaptığım bir sayfayı yeniden yükleyin.
CEVAP
Bu anti-sahte jeton daha iyi doğrulama şifreli belirteci bir parçası olarak kullanıcı adı gömer çünkü oluyor. Ne zaman ilk arama @Html.AntiForgeryToken()
kullanıcı giriş çok belirteç olacak boş bir dize için kullanıcı adı, sonra kullanıcı oturum açtığında, varsa yoksa yerine anti-sahtecilik simgesi pass doğrulama çünkü ilk token için anonim kullanıcı ve şimdi biz bir kimliği doğrulanmış bir kullanıcı ile bilinen bir kullanıcı adı.
Bu sorunu çözmek için birkaç seçeneğiniz vardır:
1 - Sadece bu kez SPA tam bir POST yapalım ve sayfayı yeniden yükler, anti-sahte güncelleştirilmiş bir kullanıcı adı ile gömülü simge olacak.
2 - giriş yaptıktan sonra @Html.AntiForgeryToken()
hak ile kısmi bir görünümü Var, başka bir AJAX isteği yapmak ve anti-sahtecilik eğer varolan bir istek yanıt simge değiştir.
3 - Sadece devre dışı bırakmak kimlik anti-sahte doğrulama gerçekleştirir kontrol edin. Senin için aşağıdakileri EkleApplication_Startyöntem:AntiForgeryConfig.SuppressIdentityHeuristicChecks = true
.
NSLocale her zaman döndürür currentLoc...
Anti-sahtecilik gerekli form alanını &...
numarasını: ÖNEMLİ: kullanıcı "is...
Facebook API - Nasıl Facebook kullanıc...
numarasını: ÖNEMLİ: veritabanı "&...