2009-05-21 63 views
4

我正在嘗試爲我正在使用的網站設置一個「私人測試版」。該網站使用開放標識。如果他們不屬於測試版,我不希望任何人瀏覽這些網頁。實現這個最好的方法是什麼?有什麼建議麼?爲網站設置一個私人測試版

例如:

當網站正式上線,用戶會去http://www.mydomain.com,不會要求他們登錄

因爲我想限制訪問公測。轉到http://www.mydomain.com的用戶將被重定向到登錄頁面。任何試圖訪問未經過身份驗證的網站的任何部分的人都將被重定向回登錄頁面。

我可以堅持[授權]屬性遍及我的控制器操作,但這似乎很愚蠢。

+0

看到我在下面添加的答案 – 2009-05-21 20:29:36

+0

啊哈 - 你使用的是IIS6,我在我的答案中加了額外的說明 – 2009-05-21 20:41:21

回答

1

如果您使用的是ASP.NET MVC,它帶有開箱即用的認證/授權。您應該可以使用它在您的網站上設置身份驗證。

或者,您可以設置應用程序服務器設置 - IIS允許您在其提供的特定站點上設置用戶名/密碼,而不管實際應用程序可以執行什麼操作。如果你有權訪問應用服務器,這可能是最好的解決方案。

如果您使用IIS6,則可以輕鬆設置授權。右鍵單擊您的站點>屬性>目錄安全性選項卡>身份驗證和訪問控制>編輯,然後輸入您選擇的用戶名/密碼。完成。

+0

我知道要怎麼使用AuthorizeAttribute我控制器操作設置權限,但似乎奇怪我是什麼做的方式。 – Micah 2009-05-21 20:26:13

+0

會拋出,迫使他們登錄認證彈出? – Micah 2009-05-21 20:42:11

1

真正的問題是他們如何被邀請參加私人測試?

您可以設置一個密碼,它像serverfault.com一樣丟棄一個cookie。

OR

如果你知道你在邀請誰:你可以事先通過電子郵件/登入你已經知道關於它們的信息並將其添加到系統

0
(假設你通過電子郵件邀請他們)

最好的方法是邀請系統(基於邀請碼)或在系統中創建配置文件後手動確認訪問。 imho

0

或者您可以將該網站託管在私人服務器上,並設置一個VPN以使用它。根據您的資源和需求,這可能是最簡單和最安全的方式,無需修改您的代碼庫就可以做您想做的事。

或者,您可以使用Apache或IIS強制訪問網站目錄進行身份驗證。在.htaccess中保存認證信息一段時間。

1

前段時間,我在一個web應用程序中實現了一個函數,我們可以阻止訪問整個網站,除非用戶是管理員(在我們的例子中,這意味着用戶帳戶是特定的成員Active Directory中的組)。

它基於兩件事。首先,Web應用程序中的所有頁面不是直接來自Page類,而是來自Web應用程序中的自定義頁面類。其次,我們在web.config文件的appSettings部分中有這樣一個值:

<add key="adminaccessonly" value="0" /> 

自定義頁面類將在加載時檢查該值。如果不是0它會重定向到一個頁面(即沒有繼承相同的自定義頁面類,雖然)通知用戶「該網站是現在沒空」。如果該值爲0,則頁面將像往常一樣加載。

在這種應用中,我們用這個能夠對網站採取「離線」的時候,我們部署了新的版本,給我們一些時間來驗證一切都很好,我們在用戶再次讓之前。

0

即使你使用開放式身份驗證,您可能仍然需要某種形式的授權機制。最簡單的形式將是數據庫中的一個用戶角色系統,它爲用戶分配不同的角色

就您而言,只需將private_beta角色分配給您的私人測試版邀請人,並確保您的授權機制在所有用戶擁有private_beta權限之前他們可能會繼續。

如果您不想爲公共站點提供授權(每個人都可以做任何事情,一旦通過身份驗證),那麼您可能只需要做一個快速而又髒的後處理(僅適用於私人測試版)在你的open_id認證用戶上檢查他們的短名單(你可以存儲在一個文本文件中)