我正在尝试构建SPA网络应用+ IdentityServer4 + ASPNET核心+ ASPNET核心身份。我已经关注了Identityserver文档中的快速入门,它非常棒。我对quickstart Identity Server Quickstart with JS Client
更感兴趣我跟着它,到目前为止一切顺利。现在我已经向我的用户添加了一些字段和相关表格,如下所示:
这是解决方案资源管理器
我想创建一个显示我的用户及其相关表/字段的页面。 (基本上,我的问题是,如何访问我当前的用户并公开我的JS客户端使用的API)
我如何实现这一目标? (以下所有描述的内容我只是在线阅读并且我不确定如何实现它)
请告知。
答案 0 :(得分:4)
IdentityServer
的想法是分离用户身份的概念。简单来说,这意味着您的web API
不应该/不会访问存储用户的数据库。
web API
中与access token
授权的用户身份相关的所有内容都应包含在IdentityServer
授予的Points
中。 (例如在索赔中)
在您的示例中,您可以从Wallets
中删除ApplicaionUser
和public class UserInfo
{
public string UserSubject { get; set; }
public int Points { get; set; }
public ICollection<Wallet> Wallets { get; set; }
}
字段,并创建用于存储它们的附加表,如下所示:
[Authorize]
public ActionResult SomeAction()
{
var identity = (ClaimsIdentity)User.Identity;
IEnumerable<Claim> claims = identity.Claims;
...
}
如果您需要与用户身份相关的内容,您可以从以下声明中获取:
Points
如果您需要用户的Wallets
和/或sub
,您可以从这些声明获得Points
声明并查询您的数据库。
这也意味着您需要按用户主题存储Wallets
和deploy.prototxt
。