2016-09-21 53 views
1

我只是調查了ASP.NET Identity,這似乎是最近用於ASP.NET應用程序中用戶身份驗證的最佳解決方案(將所有ASP.NET Membership替換爲過去)。ASP.NET身份 - 維護有關匿名用戶的信息

我正在尋找一種解決方案,可以保留有關匿名用戶的信息。 即使用戶未通過身份驗證,我們也可以收集並存儲用戶通過身份驗證後可以存儲的大部分個人資料數據。

即使用戶是匿名的,是有意義的存儲像數據:他是寫在網站上(這樣他就可以編輯它們的創建者)

  • 購物車
  • 評論
  • 各站點首選項(他的首選語言,和許多其他設置)

然後,當用戶註冊,我們可以提供給某些數據複製到他的新用戶PR (或自動複製)取決於它是什麼數據。

有沒有可能通過ASP.NET身份來實現這種情況?看起來,當一個用戶在ASP.NET Identity中匿名時,他不能擁有任何用戶配置文件數據。

爲了使用相同的表格存儲所有這些信息與經過驗證的用戶相同,我們可能需要在系統中爲每個訪問該網站的新訪客創建一個新用戶,並執行一些操作,需要存儲一些用戶數據。然後,我們需要傳遞一些cookie標識符給用戶,這樣我們就可以始終將數據連接到用戶,這可以看作是某種形式的認證(雖然對於實際用戶是不可見的)。這樣,訪客用戶實際上可以代表系統的已認證用戶(也許他只是有一個特殊角色?),儘管據他所知,他是匿名的。

您對這種方法有什麼看法? ASP.NET Identity有什麼方法可以幫助解決這個問題?

我發現這兩個相關堆棧溢出的問題,但我還沒有找到我的答案在他們:


編輯:

I發現在ASP.NET中有一種叫做的匿名身份識別,這似乎解決了部分問題。

https://msdn.microsoft.com/en-us/library/91ka2e6a(v=vs.85).aspx

也許可以某種方式與ASP.NET身份集成?

EDIT2:正如在評論中指出,爲匿名鑑定的文件似乎已經過時,這是相當可能的,微軟不會把重點放在這麼多的未來。與ASP.NET Identity或其他基於OWIN的解決方案配合使用的解決方案是首選。

+0

恐怕身份在這裏幫不了你。這裏沒有內置的功能 - 你必須自己想出大部分的東西。但是,您可以使用一些OWIN Cookie中間件來處理聲明和Cookie。 – trailmax

+1

我已經完成用OWIN身份驗證Cookie。相關的部分可以在這裏看到:https://github.com/trailmax/OwinADAuthentication/blob/master/ActiveDirectoryAuthentication/Models/AdAuthenticationService.cs#L82 – trailmax

+0

@trailmax:感謝您的回覆。我喜歡ASP.NET Identity中的大部分功能並計劃使用它們,因此我更關注如何將這些訪客用戶集成到ASP.NET Identity框架中。 –

回答

0

Asp.Net Identity沒有這樣的事情,即使通過髖關節IP或瀏覽器中的Cookie來識別匿名用戶也是不安全的,您可以要求用戶以非常小的信息或通過FB或Twitter進行註冊儘可能縮短註冊過程,稍後他可以完成他的個人資料,這樣您將確保數據與實際個人資料相關聯。

+0

從安全角度來看,這不是一個問題,不管cookie被盜或什麼都沒有關係,對於所有非常重要的操作,都需要進行適當的身份驗證。如果我要求用戶在Facebook上登錄,然後才能將商品添加到購物車,它將大大傷害轉化。還有,爲什麼你認爲通過cookie識別用戶是不安全的?不是ASP.NET身份也使用Cookie? –

+0

asp。net使用cookies作爲保持用戶會話的一種方式,並且避免請求他登錄每個請求但肯定不會認證用戶 –

+0

但是我可以竊取會話cookie並通過這樣做來訪問系統和用戶的身份。我的觀點是,使用cookie來識別匿名用戶可以像使用cookie來識別用戶的會話一樣安全。 –

0

ASP.NET 配置文件屬性允許您的應用程序跟蹤並永久存儲用戶特定的信息。例如,用戶可以指定郵政編碼或最喜歡的配色方案,並且您的應用程序可以存儲該信息並從應用程序中的任何位置檢索該信息。 ASP.NET會自動將當前用戶與用戶帳戶存儲的個人信息(無論用戶是匿名用戶還是已登錄用戶)進行匹配。

配置配置文件屬性

您將通過配置應用程序,以使配置文件屬性開始。然後,您將定義要爲每個用戶跟蹤的第一個屬性。此屬性名爲PostalCode,將爲匿名用戶和登錄用戶進行跟蹤。

來源:https://msdn.microsoft.com/en-us/library/taab950e.aspx

+0

這似乎沒有更新(對於.NET的新版本),也沒有提及那些在ASP.NET身份的任何地方。我認爲所有這些都是ASP.NET Identity應該替代的舊會員相關庫的一部分。我的目標是遠離這些遺留的庫,以便進行任何新的開發,因爲看起來微軟似乎只專注於支持OWIN基礎架構之上的功能...... –