繁体   English   中英

带有承载身份验证的ASP.NET Web API。 如何获取/添加/更新唯一用户数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM