Asp.net Mvc 6登录后立即获得用户声明

时间:2015-11-27 15:52:06

标签: asp.net security asp.net-core-mvc claims-based-identity

在Asp.net Mvc 6网站中,我定制了开箱即用的AccountController,以便在注册<{p>}之前在调用userManager.CreateAsync()之前添加自定义声明

  • 使用本地帐户(电子邮件/密码),在控制器的Register()方法
  • 使用外部提供商(google / facebook),位于控制器的ExternalLoginConfirmation()

现在我想做的是,在用户登录后立即

    调用Login()和后,在signInManager.PasswordSignInAsync()方法中
  • 调用ExternalLoginCallback()
  • 后,在signInManager.ExternalLoginSignInAsync()方法中

...要检索该声明,理想情况下无需点击数据库即可获取用户。

我注意到如果我在登录后直接查看用户,则声明集合为空。但是,如果我在后续控制器操作中查看它,则会填充“声明”集合并在其中包含我的自定义声明。

问题是,为什么登录后不会立即填写索赔(我猜登录代码不会刷新CurrentPrincipal?)并且在登录后有另一个地方可以直接检查以获取声称没有击中DB?

1 个答案:

答案 0 :(得分:1)

您可以尝试实现自己的ApplicationUserStore并填充用户所需的任何属性(或用作身份实体的实体)。