2014-04-20 33 views
6

OWIN ile MVC5 uygulamasında, harici hesaplar (google) da yerel hesapları ek olarak kullanırız. Kullanıcı yerel hesabıyla oturum açtığında, onu hatırlama seçeneğini aktif hale getirebilir, böylece her seferinde yeni giriş yapmamalı. Google hesabında oturum açtığında, her zaman google için harici giriş düğmesine yeni tıklamanız gerekir.Harici bir sağlayıcı kullanıldığında MVC5'deki oturum açma işlemi nasıl hatırlanır

“Beni hatırla” özelliğini harici girişler için de etkinleştirmek için yerleşik bir seçenek var mı? Yoksa bu özelliği eklemek için güvenli bir yol var mı?

cevap

8

Sadece sizin kullanıcı kimliği oturum açtığınızda bunu gerçekleştirmek için true IsPersistent ayarlamanız gerekir

 AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = <rememberMe> }, <userIdentity>); 
+1

Ben, bu iki soruları da bakmak Sorabilirmiyim: http://stackoverflow.com/questions/24352533/onvalidateidentity-disables-the-mvc-owin-remember- me-option ve http://stackoverflow.com/questions/24323330/how-to-rewrite-the-owin-cookie-manually-mvc5 – HCL

0

(muhtemelen de dış akışı için bana onay kutusunu hatırlıyorum ki de çeşit kazandırmakla kalmaz) Hao Kung'un önerdiği şeyi takip etmek.

Söz konusu kod satırını accountController.cs dosyasına bulacaksınız. Varsayılan fonksiyonudur:

private async Task SignInAsync(ApplicationUser user, bool isPersistent) 
    { 
     AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); 
     var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); 
     AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent}, identity); 
    } 

, tüm dış sağlayıcılarla bana işlevselliği hatırlamak etkinleştirmek hattını değiştirmek için:

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = <b>true</b>}, identity); 
0
: Sabit true isPersistent varible dile değiştirerek

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent}, identity); 

Harici oturum açma yöntemini kullanarak

: