6

Standart bir MVC projesi, UserManager ve SignInManager nesneler ve önceden oluşturulmuş giriş ve kayıt türü işlevselliği ile bir AccountController var.User.Identity.IsAuthenticated her zaman PasswordSignInAsync başarı veriyor sonra her zaman false

benim AspNetUsers tabloya yeni kullanıcılar kayıt olabilirsiniz, ama ben giriş yaparken çağırır: - verileri doğru formdan içinden geliyor ve sonuç beklediğimden Başarı vardır

var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 

.

Sonra aşağıdaki yönlendirmeleri çalıştı: -

case SignInStatus.Success: 
    //return RedirectToLocal("/admin/"); 
    return RedirectToAction("Index", "Admin"); 

ancak herhangi bir sayfada

, bu başarılı girişten sonra, User.Identity.IsAuthenticated hep yanlıştır ve User.Identity.Name boş bir dizedir.

Neyi yanlış yapıyorum? Geçmişte aynı kurulumla aynı şekilde başka bir proje yaptım ve sıfır sorun yaşadım.

web.config

<system.web> 
    <compilation debug="true" targetFramework="4.5.1" /> 
    <httpRuntime targetFramework="4.5.1" /> 
    <!--<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login/" timeout="1000" /> 
    </authentication>--> 
    <authentication mode="None" /> 
</system.web> 
<modules> 
    <remove name="FormsAuthentication" /> 
</modules> 

kimse yanlış ne yapıyorum önerebilirsiniz? Şimdi büyük sorunlara yol açıyor.

Şerefe!

+0

Başlarken "CookieAuthenticationOptions" öğesini yapılandırdınız mı? – Nkosi

+0

Bunu nasıl yaparım? –

+0

asp.net'in hangi sürümünü kullanıyorsunuz? – Nkosi

cevap

3

Projenizde klasörünüzde Startup.Auth.cs dosyanız olup olmadığını kontrol edin.

public partial class Startup { 
    public void ConfigureAuth(IAppBuilder app) {    
     // This uses cookie to store information for the signed in user 
     var authOptions = new CookieAuthenticationOptions { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,     
      LoginPath = new PathString("/Account/Login"), 
      LogoutPath = new PathString("/Account/Logout"), 
      ExpireTimeSpan = TimeSpan.FromDays(7), 
     }; 
     app.UseCookieAuthentication(authOptions); 
    } 
} 

ve asp.net ve kullandığınız kimlik sürümüne bağlı Startup sınıfa

public partial class Startup { 
    public void Configuration(IAppBuilder app) { 
     // Surface Identity provider 
     ConfigureAuth(app); 

     //..other start up code 
    } 
} 

çağrılır, bu

ASP.NET Identity AuthenticationManager vs. SignInManager and cookie expiration

+1

Bunun için teşekkürler, onu işaretleyecektir. Bu kodu projede zaten vardı, ancak sunucuda bir çatışmaya karşı kimlik doğrulamasına neden olan bir şeymiş gibi görünüyor. –

0
bakmak gerekir

Benim için web.config idi, aşağıdaki satırları izlediniz

<system.webServer> 
    <modules> 
     <!--<remove name="FormsAuthentication" /> 
     <remove name="ApplicationInsightsWebTracking" /> 
     <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" /> 
     --> 
    </modules> 
</system.webServer>