[英]ASP.NET Web API with Bearer authentication. How to get/add/update unique user data?
目前我即将开发我的第一个REST Web API!
我目前正在设计系统如何工作但我有点困惑如何工作。
首先,移动应用程序将使用Web API, 但它必须是安全的!
例如,我根本不想要处理未经过处理的请求。 (除了用户注册)
我发现我可以使用SSL + Bearer令牌来实现此用户身份验证。 我对此很满意,并已经过测试,看看它是如何工作的。 它很合适。
当我希望检索用户详细信息时出现问题。 在我的系统中,用户将登录到将从服务器请求令牌的移动应用程序。 如果一切顺利,我可以将用户登录到应用程序中。 大! 现在,我需要获取有关此用户的信息以呈现给他们。 即姓名,电子邮件,奖励积分等......
我不熟悉如何添加额外的用户数据并使用Web API检索它。 我知道令牌可以用来唯一地识别用户。 但是我该如何扩展这些数据呢?
目前,我只有一个空白的WebAPI项目,实现了承载令牌认证。 仍在使用Entity框架。 如何向用户记录添加更多数据字段? 此外,我如何更新这些记录? 例如,用户获得了一些奖励积分,如何为此更新用户数据?
最后一个问题,这是否适合保留每个用户数据? 即我可以将其他数据链接到用户ID或类似的东西吗?
听起来好奇的道歉,我对MVC很新
IdentityModel.cs中的以下代码似乎是添加用户数据的合适位置,但我该如何添加? 例如为奖励积分添加一个字段? 那么我将如何更新呢?
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
// Add custom user claims here
return userIdentity;
}
}
我该怎么做:
创建将验证令牌的ActionFilter,它将使用可以利用DI的自定义类,它显然也会获得用户ID
现在您知道用户已经过身份验证,并且您知道用户ID只是根据此用户ID执行常规CRUD
注意:请记住还要验证有效负载,因为如果我发给你PUT: /user/887/points {points: 999}
我可能获得无限积分。
没有必要使用ASP .NET Identity在Web API项目中实现安全性。
如果您使用Identity,您将不得不坚持使用“ApplicationUser”和用户管理的身份表,否则您将无法完成您的要求。
解决方案是使用您自己的自定义表处理用户管理,并使用可用于.NET的OWIN中间件类实现安全性,即,您需要编写用于生成和验证令牌的代码,而不是使用Identity。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.