簡體   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