簡體   English   中英

使用表單身份驗證時如何檢查授權?

[英]How can I check for authorization when using forms authentication?

我正在開發一個ASP.NET網站。 我計划使用Forms身份驗證以保證身份驗證/授權,但是我在授權方面面臨兩個問題:

  1. 我知道如何在Web配置中設置允許經過身份驗證的用戶訪問網頁(例如myPage.aspx)。 但是我不知道如何定義UserA能夠訪問myPage來檢索他的信息,而不是UserB的信息。 我正在考慮在用戶進行身份驗證時生成令牌,因此我能夠檢查此令牌屬於誰,並驗證此信息是否可供他使用。 您如何看待這種方法? 表單身份驗證會生成這樣的令牌嗎? (我在研究中找不到任何提及)。 如果沒有,我是否可以調整表單身份驗證機制以生成表單,還是需要自己編寫所有內容?

  2. 我想訪問Web服務,並且只有在用戶登錄后,這些服務才應該返回信息。 因此,我想使用上面說明的相同令牌。 你怎么看待這件事? 這是一個好方法嗎?

我之所以這樣問是因為我沒有設計認證/授權機制的經驗,任何幫助/提示都將不勝感激。

關於問題一,在ASP.Net Web表單應用程序中進行表單身份驗證后,用戶的身份作為Pages.User.Identity屬性中的FormsIdentity對象公開。 該對象具有Name屬性,其中包含用戶用來登錄您的網站的用戶名。 您可以使用此值來限制用戶可以訪問的內容。 例如,假設您的數據庫中有一個表,其中的用戶信息包含以下字段:

userId int
userName varchar(25)
...more fields containing user information...

您可以限制用戶僅訪問該表中userName等於Page.User.Identity.Name屬性的行中的信息,或者直接使用ADO.Net或通過對ORM映射的查詢來訪問用戶(即nHibernate或EF)域對象。

關於第二個問題,由Page.User.Identity公開的FormsIdentity對象具有布爾“ IsAuthenticated”屬性。 您可以使用它來限制對Web服務的訪問,如下所示:

if(Page.User.Identity.IsAuthenticated)
{
     //Call your web service in a secure manner
}

暫無
暫無

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

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