簡體   English   中英

如何使用REST Service-wcf WebHttpBindig對用戶進行身份驗證?

[英]how to authenticate user with rest service-wcf WebHttpBindig?

我有一個用C#編寫的服務器-客戶端項目。 我想將客戶端更改為Web客戶端,以便我們可以使用瀏覽器將其打開。 因此,我決定制作一個WCF Rest服務,以取代服務器端。 我用於該服務的綁定是webHttpBinding。 我的問題是服務的行為。 每次調用后都會初始化服務數據(變量等)。 如果我添加[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] ,則不會更改任何內容。 如果我使用[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] ,它可以工作,但我想每個客戶端的服務實例都相同。

我有一個簡單的HTML網頁,該網頁從客戶端獲取用戶名和密碼並將其發布到服務中。 該服務將使用用戶數據庫和響應檢查登錄信息。 我的問題是我無法將用戶狀態保存為已登錄狀態,因為在每種發布/獲取方法之后,服務都會重置。

我該怎么辦?

當試圖通過HTTP維護會話時,這是一個非常標准的問題,這就是webHttpBinding所使用的。 即使您試圖強迫它進行會話,也不會。 RESTful服務無法正常工作。

您需要做的高級概述是讓服務創建一個令牌,該令牌在初始身份驗證時將其提供給客戶端(可能存儲在cookie中),然后客戶端將在每次請求時將其發送回去。 然后,服務可以使用該令牌檢查客戶端是否在每個請求中都登錄到特定帳戶。 您可能希望使令牌在一定時間(可能是1個月,1周,1天,10分鍾,具體取決於您的應用程序)之后過期。

您可以在此處找到更多信息:

RESTful身份驗證

SPA認證和會話管理最佳實踐

傳統Web應用程序和API中的身份驗證,授權和會話管理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM