C# 基于用户配置文件的身份验证重定向

C# 基于用户配置文件的身份验证重定向,c#,razor,asp.net-identity,C#,Razor,Asp.net Identity,我正在尝试使用Razor页面(我以前的经验是使用web表单),在用户登录后设置重定向时遇到了困难 我想做的是查看有关用户的一些数据,然后根据这些信息重定向到特定页面 在VS提供的默认模板中,这些代码行处理登录: var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true); if (result.Succeed

我正在尝试使用Razor页面(我以前的经验是使用web表单),在用户登录后设置重定向时遇到了困难

我想做的是查看有关用户的一些数据,然后根据这些信息重定向到特定页面

在VS提供的默认模板中,这些代码行处理登录:

var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);
if (result.Succeeded)
{
    _logger.LogInformation("User logged in.");
    return LocalRedirect(Url.GetLocalUrl(returnUrl));
}
我尝试使用UserManager实例获取有关已登录用户的信息,但它不起作用(它只返回null)

我猜这是因为在加载重定向页面之前没有设置身份验证cookie?(如果我在result.successed之后立即查询SignInManager,它会告诉我用户未登录)


任何关于让它做我想让它做的事情的最佳技术的建议都将不胜感激。不完全相信Razor pages文档是最新的

您的说法是正确的,在重新加载页面之前不会设置cookie

但是,您很接近-您已经知道用户名-它位于
Input.Email
中。尽管变量的名称令人困惑,
\u signInManager.PasswordSignInAsync
使用用户名、密码和bool()

因此,要获取完整的用户对象,需要在用户管理器上使用
FindByNameAsync

var userObject = await _userManager.FindByNameAsync(Input.Email);
然后做任何你需要做的事情来决定重定向到哪里

var userObject = await _userManager.FindByNameAsync(Input.Email);