2009-01-09 50 views
0

我正在爲客戶端編寫Web應用程序。用戶將擁有一次性密鑰,他們將使用該密鑰初始嚮應用程序標識自己。一旦應用程序驗證密鑰是否有效,它將把它們帶到一個頁面,在那裏他們可以創建一個普通賬戶用於所有後續登錄。創建賬戶頁面只能在輸入密鑰後才能訪問,否則不能訪問。即,用普通賬戶登錄的用戶不應該訪問它。 這是使用自定義成員資格提供程序的asp.net 3.0。如何在ASP.Net應用程序中設置委託人

我的計劃是創建一個基於密鑰的臨時賬號與身份驗證與該帳戶的用戶。這使他們能夠訪問創建用戶頁面(該頁面受到位置標記的保護),從而可以在其中創建正式帳戶。然後我用他們的新帳戶驗證它們並刪除臨時帳戶。 流程是:用戶進入一個他們輸入密鑰的頁面。如果密鑰有效,我創建臨時帳戶,調用FormsAuthentication.SetAuthCookie,並重定向到創建帳戶頁面。儘管看起來有點複雜,但這一切都有效。

的問題是創建用戶頁面可用於任何身份驗證的用戶;我只希望它在進入密鑰和創建正式賬戶之間的時間內可用。所以我想我會爲臨時帳戶創建一個特殊角色,並使創建用戶頁面只能訪問該角色,而不能訪問其他用戶。我使用特殊角色創建了自己的Principal對象,並嘗試在驗證臨時帳戶時設置它,但無法使其工作。

我真的希望我沒有編寫自定義的角色提供只是做到這一點。

我該如何做這項工作?有一個更簡單的方法!

回答

0

爲什麼不在創建真實賬戶時輸入密鑰。爲它分配一些隨機名稱,然後讓它們更改名稱和其他詳細信息。然後,您不需要創建用戶頁面,只需輸入密鑰頁面和帳戶詳細信息編輯頁面即可。如果您擔心要填寫帳戶詳細信息,可以設置它(可能通過MasterPage上的代碼),以便在輸入詳細信息之前,不完整的帳戶始終會重定向到編輯詳細信息頁面。

或者,你可以讓他們除了鍵碼輸入鍵頁面上輸入所需信息,並創建賬戶時只需使用這些細節。

0

我的建議是在驗證用戶時避免使用臨時帳戶。相反,生成自己的驗證註冊碼的邏輯。然後,在頁面的頭部,您可以檢查用戶是否是經過身份驗證的用戶(已調用SetAuthCookie),如果這是真的,則跳轉到其他頁面。

可能甚至能夠改變頁面訪問禁止此頁面通過驗證的用戶(我知道你可以禁用未經驗證的用戶帳戶,但我不知道如果你可以去其他方向)。

的關鍵,雖然是爲了避免依靠會員供應商的時候,其實,用戶是尚未成爲會員!

0

對臨時令牌身份驗證時,指定一個「不完整」的角色,然後限制只能訪問該角色......當創建的帳戶,將它們發送到重新登錄頁面(終端認證令牌)。這將簡化您的安全模型。

相關問題