2016-04-06 14 views
6

Strava'yı harici giriş sağlayıcım olarak kullanıyorum (bunun Strava ile ilgili olmadığını, google veya facebook da olabileceğini varsayalım) Birkaç saat çalıştıktan sonra/GetExternalLoginInfoAsync dönüş günleri günler hatta haftalar. Aynı sorunla bir sürü başka soru okudum ama bir çözüm bulamadım. Siparişle ilgili yanlış bir şey yapmam durumunda, tüm ConfigureAuth yöntemimi gönderiyorum.GetExternalLoginInfoAsync() loginInfo dönüş null - ama sadece birkaç saat sonra

Bir Strava hesabınız varsa muhtemelen burada sorunu yaşayabilir: Ben StravaAuth almak için bu https://github.com/Johnny2Shoes/Owin.Security.Strava kullanıyorum fartslek.no/Account/Login

public void ConfigureAuth(IAppBuilder app) 
    { 
     // Configure the db context, user manager and signin manager to use a single instance per request 
     app.CreatePerOwinContext(ApplicationDbContext.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"), 
      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, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(30), 
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
      }, 
      CookieManager = new SystemWebCookieManager() 
     });    
     app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

     app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); 

     app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); 


     app.UseStravaAuthentication(new StravaAuthenticationOptions{ 
       ClientId="XXX", 
       ClientSecret= "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 

     }); 
    } 

.

Çalışmayı durdurduğunda azure sıfırlama yeterli değildir, ancak yeni bir dağıtım yaparsam her şey bir süre çalışır.

Ben Owin 3.0.1 ve

+0

Kodun diskteki hatalı veri verilerini önbelleğe alıp almamasını merak ediyorum. Sitenizi yeniden dağıttığınız zaman, diskteki tüm dosyalar silinir ve yenileriyle değiştirilir, bu da kimlik doğrulamanın neden sonra çalışmaya başladığını açıklar, sadece siteyi sıfırlamak hiçbir şey yapmaz. –

+0

İlginç teori. Ne kontrol edeceğiniz hakkında bir fikrin var mı? – Larsi

+0

@ZainRizvi Bunu incelediğiniz için teşekkür ederiz. Bu varsayılan kimlik doğrulama uygulaması ile düz bir mvc sitesidir, yaptığım tek değişiklik Strava'yı harici bir kimlik doğrulama sağlayıcısı olarak eklemektir. Problemin ne olduğunu bulmama yardım edersen gerçekten çok mutlu olurdum. Yine, zamanınız için teşekkürler. – Larsi

cevap

8

MVC 5.2.3 kullanıyorum ben de aynı sorunu vardı. Biraz uğraştıktan sonra, bunun, tanımlama bilgilerini ele alma biçiminden dolayı Owin'de bilinen bir böcek olduğunu keşfettim.

This issue Katana Ekibine gönderilmiştir, ancak hiç düzeltmeyecekleri anlaşılmaktadır. Bunun pek çok geçici çözümler vardır, ancak bu bulabildiğim en basit oldu:

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult ExternalLogin(string provider, string returnUrl) 
    { 
     ControllerContext.HttpContext.Session.RemoveAll(); 

     // Request a redirect to the external login provider 
     return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl })); 
    } 

Bu hata hakkında daha fazla ayrıntı için this soruya bakın ve bu sizin için faydalı olup olmadığını bana bildirin.

+1

Teşekkürler, sadece Üretime yerleştirdim - Birkaç hafta içinde çalışıp çalışmadığını size bildireceğim – Larsi

+2

https://xkcd.com/979/ – oflahero

+0

@spudnick haha. Hatırlatma için teşekkürler. Son 3 ay boyunca harika çalışıyor. Hiç sorun yok! – Larsi

İlgili konular