登录时将声明保存到数据库

时间:2014-04-06 00:01:13

标签: asp.net-mvc oauth asp.net-identity owin claims-based-identity

我有一个使用Oauth的MVC5应用程序并正在正确登录,但是我想将返回的电子邮件保存到数据库中,并且在执行此操作时遇到了麻烦。

我在startup.auth.cs中有以下代码:

以下代码添加了声明,我可以在调试器中声明电子邮件声明,但是如果是用户首次登录,则此时用户实际上并未创建,因此我无法在此更新用户。 / p>

LinkedInAuthenticationOptions x = new LinkedInAuthenticationOptions();
x.ClientId = "key";
x.ClientSecret = "key";
x.Scope.Add("r_emailaddress");

x.Provider = new LinkedInAuthenticationProvider()
{
    OnAuthenticated = async context =>
    {
        //Get the access token
        context.Identity.AddClaim(
        new System.Security.Claims.Claim("Email", context.Email));
    }
};

app.UseLinkedInAuthentication(x);

在下面的代码中(在默认项目accountcontroller.cs中)我尝试访问上面添加的电子邮件声明,但是它无法找到声明...

public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
     ClaimsIdentity identity = UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
}

有人知道如何访问我在startup.auth.cs中添加的电子邮件声明吗?

1 个答案:

答案 0 :(得分:2)

您想要执行类似于此博文的操作,只需存储电子邮件声明而不是Facebook访问令牌。

How to get more data from external providers?