gpt4 book ai didi

c# - ASP.Net MVC 5 OAuth2 Facebook 声明未保留。为什么?

转载 作者:行者123 更新时间:2023-11-30 16:51:35 24 4
gpt4 key购买 nike

我刚刚创建了一个新的 MVC 应用程序来学习一些关于 OAuth2 的知识。首先,我在 Facebook 注册为开发人员并在我的应用程序中启用了 Facebook Identity Provider:

启动.Auth.cs

app.UseFacebookAuthentication(
appId: "something",
appSecret: "secret");

身份验证开箱即用,但我想知道我的 Homecontroller 的用户属性是否有任何 Facebook 相关信息。它没有,我想知道为什么。我查看了 Katana/Owin 资源是如何实现 Facebook 提供程序的,并找到了一个可以设置自定义声明的地方:

FacebookAuthenticationHandler.cs

context.Identity.AddClaim(new Claim("urn:facebook:name", context.Name, XmlSchemaString, Options.AuthenticationType));

但是当我到达我的 Controller 并检查 Identity 的 Claims 属性时,Owin 提供者设置后没有任何这些自定义声明。当我检查数据库(AspNetUserClaims 表)我发现完全荒废了。

是否存在声明未保存到数据库的原因?数据库是否是存储这些声明的好地方(至少有一张表)?我是否必须在我的应用程序中配置任何内容才能保留声明?或者还有什么地方可以让声明在整个用户 session 中保持有效?

最佳答案

好吧,深入了解 Owin 并得出结论,身份验证提供程序是 Owin 中间件构造的一部分,它在管道中独立运行,不会直接影响应用程序主体。在 AccountController 中有一个名为 ExternalLoginCallback 的操作,当整个 auth aria 完成时调用它。它获取一个 ExternalLoginInfo 对象,其中包含我的所有声明,并构建一个作为官方应用程序用户的 ApplicationUser。它有一个 Claims 属性,但该属性不会自动填充我从 ExternalLoginInfo 获得的声明,我想原因是声明可能会随着每次登录而改变。因此,就我而言,我最好先删除所有旧声明,然后再将新声明添加到我的用户中。由于这是习俗,我必须自己以某种方式提供。由于此数据非常不稳定,我暂时将其保存在 session 中。

热烈欢迎就此问题提出任何意见。

关于c# - ASP.Net MVC 5 OAuth2 Facebook 声明未保留。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com