Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法重定向到asp.net core中的本地页面_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 无法重定向到asp.net core中的本地页面

C# 无法重定向到asp.net core中的本地页面,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我不熟悉asp.net核心。我已用于登录和注册。我试图在成功登录后重定向到我的页面 public async Task<IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = Url.Content("~/Home/Index"); if (ModelState.IsValid) { // This does

我不熟悉asp.net核心。我已用于登录和注册。我试图在成功登录后重定向到我的页面

public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {
        returnUrl = Url.Content("~/Home/Index");

        if (ModelState.IsValid)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true
            var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
            if (result.Succeeded)
            {
                _logger.LogInformation("User logged in.");
                return LocalRedirect(returnUrl);
            }
            if (result.RequiresTwoFactor)
            {
                return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
            }
            if (result.IsLockedOut)
            {
                _logger.LogWarning("User account locked out.");
                return RedirectToPage("./Lockout");
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return Page();
            }
        }

        // If we got this far, something failed, redisplay form
        return Page();
    }
更新1

下面是我的
Login.cshtml.cs

namespace DemoLogin.Areas.Identity.Pages.Account
{
[AllowAnonymous]
public class LoginModel : PageModel
{
    private readonly UserManager<DemoLoginUser> _userManager;
    private readonly SignInManager<DemoLoginUser> _signInManager;
    private readonly ILogger<LoginModel> _logger;

    public LoginModel(SignInManager<DemoLoginUser> signInManager, 
        ILogger<LoginModel> logger,
        UserManager<DemoLoginUser> userManager)
    {
        _userManager = userManager;
        _signInManager = signInManager;
        _logger = logger;
    }

    [BindProperty]
    public InputModel Input { get; set; }

    public IList<AuthenticationScheme> ExternalLogins { get; set; }

    public string ReturnUrl { get; set; }

    [TempData]
    public string ErrorMessage { get; set; }

    public class InputModel
    {
        [Required]
        [EmailAddress]
        public string Email { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string Password { get; set; }

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

    public async Task OnGetAsync(string returnUrl = null)
    {
        if (!string.IsNullOrEmpty(ErrorMessage))
        {
            ModelState.AddModelError(string.Empty, ErrorMessage);
        }

        returnUrl = returnUrl ?? Url.Content("~/");

        // Clear the existing external cookie to ensure a clean login process
        await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);

        ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

        ReturnUrl = returnUrl;
    }

    public async Task<IActionResult> OnPostAsync(string returnUrl = null)
    {
        returnUrl = returnUrl ?? Url.Content("~/");

        if (ModelState.IsValid)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true
            var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
            if (result.Succeeded)
            {
                _logger.LogInformation("User logged in.");
                return LocalRedirect(returnUrl);
            }
            if (result.RequiresTwoFactor)
            {
                return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
            }
            if (result.IsLockedOut)
            {
                _logger.LogWarning("User account locked out.");
                return RedirectToPage("./Lockout");
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return Page();
            }
        }

        // If we got this far, something failed, redisplay form
        return Page();
    }
}
}
namespace DemoLogin.Areas.Identity.Pages.Account
{
[异名]
公共类LoginModel:PageModel
{
私有只读用户管理器_UserManager;
专用只读签名管理器\u签名管理器;
专用只读ILogger\u记录器;
公共登录模型(SignInManager SignInManager,
ILogger记录器,
用户管理器(用户管理器)
{
_userManager=userManager;
_signInManager=signInManager;
_记录器=记录器;
}
[BindProperty]
公共输入模型输入{get;set;}
公共IList外部登录{get;set;}
公共字符串ReturnUrl{get;set;}
[临时数据]
公共字符串错误消息{get;set;}
公共类输入模型
{
[必需]
[电邮地址]
公共字符串电子邮件{get;set;}
[必需]
[数据类型(数据类型.密码)]
公共字符串密码{get;set;}
[显示(Name=“记得我吗?”)]
公共布尔记忆{get;set;}
}
公共异步任务OnGetAsync(字符串返回URL=null)
{
如果(!string.IsNullOrEmpty(ErrorMessage))
{
AddModelError(string.Empty,ErrorMessage);
}
returnUrl=returnUrl??Url.Content(“~/”);
//清除现有的外部cookie以确保干净的登录过程
等待HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
ExternalLogins=(wait _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
ReturnUrl=ReturnUrl;
}
公共异步任务OnPostAsync(字符串returnUrl=null)
{
returnUrl=returnUrl??Url.Content(“~/”);
if(ModelState.IsValid)
{
//这不会将登录失败计入帐户锁定
//要启用密码故障触发帐户锁定,请设置lockoutOnFailure:true
var result=wait _signInManager.PasswordSignInAsync(Input.Email、Input.Password、Input.RememberMe、lockoutOnFailure:false);
if(result.successed)
{
_logger.LogInformation(“用户登录”);
返回LocalRedirect(returnUrl);
}
if(结果要求系数)
{
return RedirectToPage(“./LoginWith2fa”,新的{ReturnUrl=ReturnUrl,RememberMe=Input.RememberMe});
}
如果(结果IsLockedOut)
{
_logger.LogWarning(“用户帐户锁定”);
返回重定向Topage(“/锁定”);
}
其他的
{
AddModelError(string.Empty,“登录尝试无效”);
返回页();
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回页();
}
}
}

我已经注册了一个用户,然后尝试登录。但是我没有重定向到我的页面
~/Home/Index

我想我知道问题所在,您是否在索引方法中添加了
[Authorize]
属性

这是解决办法

将订单更改为:

     app.UseAuthentication();
     app.UseAuthorization();
炫耀:

由于您的项目中有很多错误,我建议您创建一个新项目并按照我的步骤进行操作。这很简单

步骤1:(更改
身份验证
):

步骤2:(单击项目
添加
,然后单击
新建脚手架项目
):

步骤3:(选择标识,然后添加):

步骤4(覆盖所有文件,然后添加):


最后:迁移并运行project。首先注册,然后登录。

是否成功登录?@NeutralHandle是,它正在成功登录。redirect不能与post一起使用。@NeutralHandle确定,然后做什么?或者在成功响应后从客户端重定向。。。[我自己也在读一点关于这个话题的书,因为我没有完全的理解,所以我选择了后重定向get,而这种行为似乎会阻止它。]评论不用于长时间的讨论;这段对话已经结束。
     app.UseAuthentication();
     app.UseAuthorization();