C# 使用ReturnURL登录MVC失败
我的目标是从我的登录控制器返回401错误。我用内置的.Net成员资格提供商启动了一个股票MVC站点。当前发生的情况是,当我从控制器返回401时,我得到一个C# 使用ReturnURL登录MVC失败,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我的目标是从我的登录控制器返回401错误。我用内置的.Net成员资格提供商启动了一个股票MVC站点。当前发生的情况是,当我从控制器返回401时,我得到一个http://xxxxx/Account/Login?ReturnURL=XXXX我不希望重定向发生,我只希望控制器返回401,以便我可以在客户端处理它。在此问题上的任何帮助都将不胜感激 除帐户控制器上的登录方法外,所有代码都是股票会员资格提供程序 [HttpPost] [AllowAnonymous] public async Task<
http://xxxxx/Account/Login?ReturnURL=XXXX
我不希望重定向发生,我只希望控制器返回401,以便我可以在客户端处理它。在此问题上的任何帮助都将不胜感激
除帐户控制器上的登录方法外,所有代码都是股票会员资格提供程序
[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);
}
}
[HttpPost]
[异名]
公共异步任务登录(LoginViewModel模型)
{
如果(!ModelState.IsValid)
{
返回视图(模型);
}
//这不会将登录失败计入帐户锁定
//要使密码失败触发帐户锁定,请更改为shouldLockout:true
var result=wait SignInManager.PasswordSignInAsync(model.Email、model.Password、model.RememberMe、shouldllockout:false);
开关(结果)
{
案例标志状态成功:
返回新的HttpStatusCodeResult(200);
案例标志状态锁定输出:
返回视图(“锁定”);
案例标志状态。要求验证:
//return RedirectToAction(“SendCode”,new{ReturnUrl=ReturnUrl,RememberMe=model.RememberMe});
案例信号状态故障:
违约:
返回新的HttpStatusCodeResult(401);
}
}
在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(应用程序)
并且它不会在Startup.Auth.cs
中注册函数,因此您可以获得HTTP错误401.0-未经授权我没有遵循mIchaelMao的建议。我必须在Startup.Auth.cs的第28行注释掉LoginPath=new PathString(“/Account/Login”)
,如果这样做,我将不会运行MVC为我设置的所有身份验证。您期望的ActionResult
返回类型和返回值就是这种类型的一个实例。如果要返回纯状态代码,请查看web API模板中的IHttpActionResult