Microsoft.Owin.Security.xyz OnAuthenticated不存储在数据库中

时间:2014-04-12 02:36:17

标签: asp.net-identity

我正在使用ASP.NET Identity 2.0。我看到很多这样的ASP.NET Identity样本:

const string XmlSchemaString = "http://www.w3.org/2001/XMLSchema#string";
var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions
{
    AppId = ConfigurationManager.AppSettings.Get("FacebookAppId"),
    AppSecret = ConfigurationManager.AppSettings.Get("FacebookAppSecret"),
    Provider = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationProvider()
    {
        OnAuthenticated = (context) =>
        {
            var claim = new System.Security.Claims.Claim("urn:facebook:access_token", context.AccessToken, XmlSchemaString, "Facebook");
            foreach (var x in context.User)
            {
                string key = string.Format("urn:facebook:{0}", x.Key);
                string value = x.Value.ToString();
                claim.Properties.Add(key, value);
            }

            context.Identity.AddClaim(claim);

            return Task.FromResult(0);
        }
    }
};

AddClaim看起来就像只将这些声明添加到内存中。不存储在数据库中。这是正常的吗?我的意思是,如果我想将这些声明存储到数据库中并在之后阅读,我该怎么办?我很少看到任何关于此的代码示例。

1 个答案:

答案 0 :(得分:1)

通常在回调中,您将声明从外部提供程序映射到数据库,然后发出新的Cookie来为您的应用程序建立主要身份验证Cookie的模型。这可能有助于解释更多:

http://brockallen.com/2014/01/09/a-primer-on-external-login-providers-social-logins-with-owinkatana-authentication-middleware/