2016-03-28 8 views
2

Asp.net kimlik üyeliğini kullanıyorum. Bu Startup.Auth.cs kodunuz: i 3 saate expiretimespan kurdum, ancak üretim sunucusunda çalışmıyor görebileceğiniz gibiC# Asp.net mvc kimliği, kullanıcılar çok hızlı bir şekilde çıkış yapıyor

app.CreatePerOwinContext(EFDbContext.Create); 
     app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); 
     app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create); 

     // Enable the application to use a cookie to store information for the signed in user 
     // and to use a cookie to temporarily store information about a user logging in with a third party login provider 
     // Configure the sign in cookie 
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/Account/Login"), 
      ExpireTimeSpan = TimeSpan.FromHours(3), 
      CookieName = "MyLoginCookie", 

      Provider = new CookieAuthenticationProvider 
      { 
       // Enables the application to validate the security stamp when the user logs in. 
       // This is a security feature which is used when you change a password or add an external login to your account. 
       OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User>(
        validateInterval: TimeSpan.FromMinutes(30), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 

      } 
     }); 

. Yaklaşık on dakika içinde sona eriyor. Ama kontrol ettiğimde, MyLoginCookie öğelerini hala kontrol ediyor. Localhost üzerinde çalışıyor. Neden üretim sunucusunda sorunları var? CookieDomain'i ayarlamam gerekir mi? Lütfen bana yardım edin, yaklaşık altı saat içinde çözüm bulmaya çalışıyorum ama şanssızım.

+0

'On dakika içinde sona eriyor '- bunun gerçekleştiği durumlar neler? 10 dakika işlem yapılmıyor mu yoksa istemci istekte aktif olarak çalışıyor ve ilk oturum açıldıktan sonra 10 dakika geçiyor mu? Çerezin tarayıcıdaki son kullanma tarihi/saati nedir (tarayıcı yazılım araçlarınızla görüntülenebilir olmalıdır)? Hangi tarayıcıları denediniz? '' üretim sunucusunda çalışmıyor '- beklendiği gibi çalışıyor (sadece yerel olarak ya da bir test sunucusunda)? Daha fazla bilgi vermek için sağlayabileceğiniz başka bir şey var mı? – Igor

+0

(porduction) Kullanıcı on dakika içinde http isteği göndermezse, çıkış yapar. Yerel olarak ben yaklaşık 30 dakika inaktif oldu ama ben geri oturum açmıştı. Google chrome kullanıyorum, ve kontrol etmek için MyLoginCookie süresi sona eriyor N/A, hem yerel hem de üretim sunucusunda – user3857731

+0

] (http://www.jamessturtevant.com/posts/ASPNET-Identity-Cookie-Authentication-Timeouts/) henüz? Zaman aşımlarının farklılıklarını ve beklenen davranışlarını açıklamakta iyi bir iş çıkarır. – Igor

cevap

5

Kullanıcıların günlüğe kaydetme nedenleri, form kimlik doğrulaması verilerinin ve görüş durumu verilerinin doğrulanmasında hatalardan kaynaklanır. Bu web barındırma hizmetleri barındırma kullanarak dahil olmak üzere farklı nedenlerle olabilir. webconfig projenizde <machineKey> kontrol etmelisiniz. Bununla ilgili ayrıntılar için here adresini kontrol edin. Eğer senin webconfig yılında <machineKey> yoksa, sizin WebConfig içinde <system.web> sonra bu kod parçası eklemeyi deneyin:

<machineKey 
    validationKey="AutoGenerate,IsolateApps" 
    decryptionKey="AutoGenerate,IsolateApps" 
    validation="HMACSHA256" 
    decryption="Auto" 
    /> 

Diğer seçenek WebConfig içinde üretilen ASP.NET Makinesi Anahtarı kullanıyor. Benim önerim olanların this ve this olduğu bazı çevrimiçi araçlar var.

İlgili konular