5

Başlığı ASP.NET MVC'deki Forms Authentication ile sarmaya çalışıyorum. Benim durumumda MVC 5 benim özel durumumda.AuthorizeAttribute/Account/Login'e yönlendirmeyi sürdürüyor

Uygulamam şifreler kullanmıyor, sadece kullanıcı adı olarak bir e-posta adresi.

Login yönteminde hata ayıklama yaparken, modelin geçerli olduğunu ve (özel) MembershipProvider kullanıcı tarafından beklendiği gibi doğru olduğunu görebiliyorum.
Daha sonra sağlanan returnUrl yönlendirir (sınama amacıyla, bir AuthorizeAttribute on/Home/About var).

Maalesef hemen geri dönüp Login görünümüne geri dönüyorum. Bu nedenle, tüm sürecin temel bir öğesinin eksik olduğunu görüyorum (ve ek olarak, tüm auth/auth işlemine temel bir bakış açısı atıyorum). nadiren onunla oynayın).

Girişi yöntemi:

[HttpPost] 
[AllowAnonymous] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
{ 
    if(ModelState.IsValid && Membership.ValidateUser(model.Email, "")) 
    { 
     FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe); 

     if (Url.IsLocalUrl(returnUrl)) 
     { 
      return RedirectToLocal(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("Index", "Home"); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("", "Email address unknown"); 
    } 

    return View(model); 
} 

LoginViewModel:

public class LoginViewModel 
{ 
    [Required] 
    [Display(Name = "Email")] 
    [EmailAddress] 
    public string Email { get; set; } 

    [Display(Name = "Remember me?")] 
    public bool RememberMe { get; set; } 
} 

Web.config ilgili kısmı:

<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
</system.web> 

Ne görmüyorum? Nereye bakmalıyım?

+0

Hiçbir uzman (hiç) değilim, ama sizin kodu atlama yaparken, görünüm modeli geçerli hale gelmez –

+0

yapılır? Bunun dışında bir yetkilendirme özniteliği yerine IsAuthorised'i kullanırdım. – jbutler483

+0

@ jbutler483 evet, eğer yapmadıysa, herhangi bir yönlendirme olmazdı. –

cevap

4

FormsAuthentication kullanarak çerezinizi ayarlıyorsunuz. MVC5 kullanıyorsanız, bu kimlik doğrulama türünü [Authorize] özniteliğiyle kaldırdılar.

Bunu web.config sayfanızda arayın. FormsAuthentication'ı kullanmak istiyorsanız o satırı kaldırın.

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
    </system.webServer> 

Microsoft yerine Owin MVC5 içinde FormsAuthentication kaldırıldı ve nasıl kullanılacağı hakkında neden bu okumak isteyebilirsiniz: http://blogs.msdn.com/b/webdev/archive/2013/07/03/understanding-owin-forms-authentication-in-mvc-5.aspx

+0

Harika! Çok teşekkür ederim! –

0

Bu davranış, IIS Express yanlış bir ayar sebep olabilir.

IISExpress ayarlarını kontrol edin. Ya da proje üzerinde *.csproj proje dosyasını düzenleyerek F4 tuşlarına basarak.

  1. Özelliği Anonymous Authentication için Enabled;
  2. Windows Authentication özelliğini Disabled olarak ayarlayın.

VEYA düzenleme yapılandırma için: jbutler483 @

<PropertyGroup> 
    <IISExpressAnonymousAuthentication /> 
    <IISExpressWindowsAuthentication /> 
İlgili konular