SORU
20 ŞUBAT 2013, ÇARŞAMBA


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:

  1. Olmayan-giriş kullanıcı bir iletişim kutusu yükler (anti-sahte oluşturulan bir simge ile)
  2. Kullanıcı pencereyi kapatır
  3. Kullanıcı günlükleri
  4. Kullanıcı aynı iletişim kutusu açar
  5. 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
25 Mart 2013, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MVLV28

    MVLV28

    17 Mart 2008
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006
  • Thom Hall

    Thom Hall

    24 Kasım 2006