2016-03-07 118 views
0

我的目標是從我的登錄控制器返回401錯誤。我使用內置的.Net成員資格提供程序啓動了一個庫存MVC站點。目前發生的事情是,當我從控制器返回401時,我得到一個http://xxxxx/Account/Login?ReturnURL=XXXX我不想重定向發生,我只想讓控制器返回一個401,以便我可以在客戶端處理它。任何有關這個問題的幫助將不勝感激。使用ReturnURL的MVC登錄失敗

所有的代碼是除了在賬戶控制器登錄方法股價成員提供

[HttpPost] 
[AllowAnonymous] 
public async Task<ActionResult> Login(LoginViewModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 

    // This doesn't count login failures towards account lockout 
    // To enable password failures to trigger account lockout, change to shouldLockout: true 
    var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
    switch (result) 
    { 
     case SignInStatus.Success: 
      return new HttpStatusCodeResult(200); 
     case SignInStatus.LockedOut: 
      return View("Lockout"); 
     case SignInStatus.RequiresVerification: 
     //  return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 
     case SignInStatus.Failure: 
     default: 
      return new HttpStatusCodeResult(401); 
    } 
} 
+0

您預計'ActionResult'返回類型和值return是此類型的一個實例。如果你想返回純粹的狀態碼,看一下Web API模板中的IHttpActionResult' – Sherlock

回答

-1

我沒有遵循michaelMao的建議。我不得不在第28行的Startup.Auth.cs中註釋掉LoginPath = new PathString("/Account/Login")

0

在MVC5,有在項目中Startup.cs,代碼

using Microsoft.Owin; 
using Owin; 

[assembly: OwinStartupAttribute(typeof(WebMVC.Startup))] 
namespace WebMVC 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      ConfigureAuth(app); 
     } 
    } 
} 

評論出ConfigureAuth(app);它不會在Startup.Auth.cs註冊功能,所以你可以得到HTTP錯誤401.0 - 未授權

+0

如果我這樣做,我將不會運行MVC爲我提供的所有身份驗證。 – gh9