【问题标题】:How to get UserID in OWIN OAuth .NET如何在 OWIN OAuth .NET 中获取用户 ID
【发布时间】:2014-10-12 04:38:27
【问题描述】:

我是按照这篇文章来实现OAuth认证的: http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

您可以找到 ExternalLoginCallback 控制器的操作。 在该操作中执行以下方法:

ExternalLoginInfo loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

loginInfo 具有 Login 属性。 Login 属性具有 LoginProvider 和 ProviderKey 属性。

有谁知道 ProviderKey 属性是什么?注册到 provider 的 UserID 是唯一的吗?

谢谢

【问题讨论】:

    标签: asp.net-mvc oauth


    【解决方案1】:

    尝试User.Identity.GetUserId() 方法。

    if (loginInfo == null)
    {
        return View("ExternalLoginFailure");
    }
    
    var userId = User.Identity.GetUserId();
    

    有关更多信息,请参阅Get more information from Social providers used in the VS 2013 project templates 帖子。

    更新:另一种获取用户的方法是:

    var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
    if (loginInfo == null)
    {
        return RedirectToAction("Login");
    }
    
    var user = await UserManager.FindAsync(loginInfo.Login);
    if (user != null)
    {
        await SignInAsync(user, isPersistent: false);
        return RedirectToLocal(returnUrl);
    }
    

    【讨论】:

    • 感谢您的回复。那么,您认为上述方法会从提供商(例如 Facebook)返回唯一的 userId 吗? Login 属性是什么?
    • 根据它的文档GetExternalLoginInfoAsync 从外部身份中提取登录信息。它是一种通用方法,它只提供识别用户所需的数据。返回值包含默认用户名、第三方提供商名称和身份验证 ID。它不提供有关用户的供应商特定详细信息
    猜你喜欢
    • 2015-01-24
    • 2023-01-01
    • 2019-05-31
    • 2016-10-09
    • 2013-06-14
    • 2018-02-26
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多