2014-12-02 35 views
0

我開始使用.net和wcf服務,很抱歉,如果我所問的是錯誤的或者是有缺陷的。順便說一句,對不起我的英語。WCF服務IIS爲外部客戶建立用戶登錄服務

我想建立幾個WCF服務託管在IIS上,因特網客戶端可以用他們的用戶名/密碼(存儲在數據庫中的信息)登錄。當他們登錄後,他們可以訪問他們的信息,查看他們的私人文件,更改他們的個人資料以及與他們的帳戶相關的更多操作。

那麼,在asp.net中,如果我在成功登錄後獲得會話,則可以構建像「GetMyDocs」這樣的服務,並且我知道「誰是」,只需檢查會話ID時存儲的會話用戶名,他的會議沒有超時。但我注意到WCF服務是無狀態的,所以這似乎我必須在執行服務之前發送所有請求中的用戶名/密碼並在數據庫中檢查它們...總是!?後來,如果我想構建一個客戶端桌面/ Android/iOS應用程序,我將使用這些服務。然後,他們可以在成功登錄後通過這些應用程序管理他們的個人和私人數據。

我該如何處理? 是WCF服務的路要走還是WCF不是一個好的選擇呢? 我如何處理用戶標識與WCF?因爲我的所有服務都鏈接到用戶,並且「GetMyDocs」,「SaveNewConfig」,「PayItem」...需要識別誰在呼叫。

在此先感謝!問候!

回答

0

,但我注意到,WCF服務是無狀態

這種說法是一種錯誤。因爲您可以在啓用狀態的情況下輕鬆創建「基於WCF的」Web服務。此外,國家是一個如此廣泛的術語,在這裏不值得討論。例如,你可以使用會話狀態與WCF服務,或者你可以在服務的InstanceContextMode屬性設置爲下列之一:

  • PerCall
  • PerSession

當然,這一切都取決於你如何配置服務本身。

如果你的服務需要由不同的客戶端使用,您應該使用OAuth 2.0或類似的東西一起實現RESTful服務考慮在那裏你可以驗證使用Basic Authentication header或認證成功後發出access token的請求。

+0

但我的WCF服務將返回與用戶相關的不同數據。當所有用戶的數據相同而不是個人用戶時,我認爲應該使用RESTful服務。對不起,如果我錯了。 我已經閱讀過許多博客/文章,WCF服務更適合perCall和int,大多數情況下這不應該改變。我現在有點困惑:( – Jrm 2014-12-02 10:50:05

+0

'我認爲當數據對所有用戶都是相同的而不是個人用戶時應該使用RESTful服務'這是一個虛假的聲明 – Leo 2014-12-03 03:37:26

+0

似乎我需要閱讀更多文檔:P感謝您的支持 – Jrm 2014-12-03 07:57:12

0

有很多方法可以爲WCF服務提供身份驗證。其中之一是通過使用會話(basicHttp不支持會話,您必須使用wshttp或任何支持會話的其他傳輸)。但是,啓用會話是一項巨大的開銷,只是爲了避免在每個請求上發送證書。

會話會降低可擴展性,但如果您不擔心它,這是一個選項。

+0

但是...每次檢查查詢我的數據庫的憑證都是很大的開銷,不是嗎?我讀過WCF中的會話不像ASP.net會話那樣按照請求存儲數據。 感謝您的回覆,但我很抱歉,仍然不知道如何處理我的問題... – Jrm 2014-12-02 10:33:21