2016-12-01 48 views
0

我想爲Visual Studio(2015)開發一個使用Xamarin的小型跨平臺,它基本上從SQL Server數據庫讀取字段並將它們排列在簡單的用戶界面上。爲跨平臺移動應用程序創建身份驗證邏輯的最佳做法

該數據庫只有一個表,用戶,有一些用戶信息列,外加兩個包含用戶用來登錄和查看其信息的用戶名和密碼的列。

我想用類似的方式在System.Data.SqlClient.SqlConnection類實現一個簡單的SQL查詢:

SELECT TOP 1 * 
FROM Users 
WHERE Username = @username AND Password = @password 

或許調用過程像這些
Easiest way to validate user in stored procedure?
與System.Data .SqlClient.SqlCommand

...然後如果發生登錄,則存儲某些變量中的字段,然後將它們鏈接到接口上的文本框。

我不知道這是否是正確的方式來做到這一點,它看起來像我甚至不能實現登錄的REST服務,因爲只有一個「主」用戶可以訪問數據庫本身。

我在上面的邏輯中看到的第一個問題是如何檢查用戶是否已經登錄,如果過了很多時間,沒有會話或令牌?

我的問題是,有人有一些很好的教程和指導來學習,也許有一些很好的例子,所以我可以解決這個身份驗證/登錄困難?

(對不起任何錯誤,我是新來這個話題,想學)

+0

你好羅布,我不知道我是否理解你的問題,但我存儲用戶名和密碼,因此,如果用戶「已經存在」,他可以用他的憑據登錄,因爲用戶已經存在於數據庫中。 –

+0

不需要發明輪子。 https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/azure/ –

+0

你好Dany,據我瞭解你發佈的方法使用第三方提供商進行身份驗證,我已經有用戶和密碼在我的數據庫,這應該是唯一的方式進行身份驗證。 –

回答

0

是不是真的有最佳實踐這一點。首先,你通過參數化你的SQL查詢來做正確的事情。您確實需要確保沒有SQL注入攻擊。但基本上你認證的方式取決於你。如果您想使用行業標準登錄網站,您可以查看oAuth。

但在你的情況下,你可能只想用令牌保存一個用戶名的靜態字典。因此,當用戶登錄時,只需將一個guid添加到字典中並將該guid給予用戶。然後,在隨後的通話中,您將知道用戶是誰,因爲他們會在每次通話時將令牌傳遞給您。只要確保在24小時後通過從詞典中刪除令牌即可過期。

相關問題