如何设置当前用户身份信息

时间:2019-07-01 17:10:36

标签: c# asp.net-mvc authentication oauth-2.0 asp.net-identity

我正在尝试使用Discord实现登录。我有用户的不和谐信息,现在我需要使它得到授权,以便他们可以查看某些页面。

我尝试过:

System.Web.HttpContext.Current.User.Identity.Name = User.id;
System.Web.HttpContext.Current.User.Identity.IsAuthenticated = true;

但是,这是行不通的,因为它们是只读值。

这是User类当前的样子:

public class User
    {
        public string id;
        public string username;
        public string discriminator;
        public string avatar;
        public bool verified;
        public string email;
        public int flags;
        public int premium_type;
    }

我正在检查ID是否存在于数据库中。然后,我尝试使它成为asp.net身份的当前登录用户。

如何将该用户设置为当前登录的身份?

1 个答案:

答案 0 :(得分:0)

您需要实例化UserManager和SignInManager。

在您的控制器中添加这些依赖项。

private readonly UserManager _userManager;
private readonly SignInManager _signInManager;

public AccountController(
    UserManager userManager,
    SignInManager signInManager)
{
    _signInManager = signInManager;
    _userManager = userManager;
}

然后使用这两个管理员来获取您想要的信息

var appUser = _userManager.FindByIdAsync(user.Id);

获取您的应用程序用户

_signInManager.SignInAsync(appUser);

然后,假定该用户已存在于系统中,则该用户将登录。如果没有,则需要通过_userManager创建新用户。

以下是一些参考链接:

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-2.2&tabs=visual-studio

https://docs.microsoft.com/en-us/previous-versions/aspnet/dn613290(v%3Dvs.108)

https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.identity.signinmanager-1?view=aspnetcore-2.2