2010-06-11 19 views
4

是否有同時顯示OpenID和正常登錄在同一個視圖中的任何網站?大多數網站在不同視圖上都有OpenID實施或正常登錄實施。OpenID和正常登錄在同一個視圖?

我想這樣做,但似乎我的代碼是非常髒,如果使用OpenID傳遞一個空白的用戶名和密碼,否則OpenID的將是空白的,但通過用戶名和密碼。

但後來我失去驗證用戶是否已經輸入了正確的價值觀的能力,有沒有最佳實踐爲我做到這一點?

非常感謝

+0

有兩個接受按鍵和返回的東西爲二進制。 如果你傳遞一個二進制字段,你有一個有用的字段,沒有空白字段+對10歲的孩子更安全。 – Behrooz 2010-06-11 07:51:32

回答

1

你已經採取了看看NerdDinner?這是一個開源樣本,包含您要求的雙重登錄屏幕。它使用DotNetOpenAuth,因此它也很容易應用到您的網站。

1

按照要求,這裏是其中顯示,無論OpenID和在同一視圖正常的用戶名/密碼登錄網站: https://sourceforge.net/account/login.php

當你創建了一個頁面,這是完全正常對於未使用的表單變量是空的。它不會讓你的代碼變得骯髒。它只是表示用戶所做的事情:他在某些字段中輸入文本並將其他字段留空。

您仍然可以驗證提交的數據是正確的;你只需要添加更多的邏輯到你的控制器。在僞代碼,它可能是這個樣子:

if openid_identifier != "": 
    validate_openid(openid_identifier) 
else: 
    validate_password(username, password) 

另外值得一提的是,對於已知支持它的OpenID提供商,你可以使用的OpenID 2.0的標識選擇功能,並提供一個簡單的按鈕,而不是要求用戶輸入他的OpenID。詳情請參閱the spec

+0

Yech。這是一個正確的答案,但我不會使用SourceForge作爲一個好例子。界面很差,OpenID的實施更糟。 – 2010-06-13 02:35:05