我正在尝试为我正在处理的网站设置“私有测试版”。该网站使用开放ID。我不希望任何人甚至浏览页面,如果他们不是测试版的一部分。实现这个的最佳方法是什么?有什么建议吗?
例如:
当网站上线时,用户将转到http://www.mydomain.com,这不需要他们登录。
对于测试版,我想限制访问。转到http://www.mydomain.com的用户将被重定向到登录页面。任何试图访问未经过身份验证的网站任何部分的人都将被重定向回登录页面。
我可以在我的控制器操作中粘贴[Authorize]属性,但这看起来很愚蠢。
答案 0 :(得分:1)
如果您使用的是ASP.NET MVC,它会提供开箱即用的身份验证/授权。您应该可以使用它来设置您网站上的身份验证。
或者您可以设置应用服务器设置 - IIS允许您在其服务的特定站点上设置用户名/密码,而不管实际应用程序可能执行的操作。如果您有权访问应用服务器,这可能是最佳解决方案。
如果您使用的是IIS6,则可以轻松设置授权。右键点击您的网站&gt;属性&gt;目录安全性选项卡&gt; <认证和访问控制>编辑,然后输入您选择的用户名/密码。完成。
答案 1 :(得分:1)
真正的问题是他们如何被邀请加入私人测试版?
你可以设置一个像serverfault.com那样丢弃cookie的密码。
OR
如果您知道自己邀请的人:您可以使用您已经了解的电子邮件/登录信息(假设您通过电子邮件邀请)将其添加到系统中
答案 2 :(得分:1)
我之前在Web应用程序中实现了一个功能,我们可以阻止访问整个网站,除非用户是管理员(在我们的例子中意味着用户帐户是特定组的成员)在Active Directory中。
这是基于两件事。首先,Web应用程序中的所有页面不是直接从Page类继承,而是从Web应用程序中的自定义页面类继承。其次,我们在web.config文件的appSettings部分中有这样的值:
<add key="adminaccessonly" value="0" />
自定义页面类会在加载时检查该值。如果它不是0,它将重定向到一个页面(虽然没有继承相同的自定义页面类),通知用户“该站点现在不可用”。如果值为0,则页面将照常加载。
在该应用程序中,我们使用此功能可以在部署新版本时使网站“脱机”,让我们有时间在再次让用户进入之前验证一切正常。
答案 3 :(得分:0)
最佳方式是邀请系统(基于邀请代码)或在系统中创建配置文件后手动确认访问。 IMHO
答案 4 :(得分:0)
或者您可以在私人服务器上托管该网站,并设置VPN以使用它。根据您的资源和需求,这可能是最简单,最安全的方式,无需修改代码库即可完成所需的操作。
或者您可以使用Apache或IIS强制访问网站目录时进行身份验证。将身份验证信息保存在.htaccess中一段时间。
答案 5 :(得分:0)
即使您使用开放式身份验证,您仍可能需要某种形式的授权机制。最简单的形式是数据库中的用户角色系统,它为用户分配不同的角色
在您的情况下,只需将private_beta角色分配给您的私人测试版受邀者,并确保您的授权机制,即所有用户都可以继续使用private_beta特权。
如果您不想为公共站点提供授权(每个人都可以执行所有操作,一旦通过身份验证),那么您可能只需要进行快速而肮脏的后处理(仅限私有测试版)在open_id经过身份验证的用户上,将它们从短列表中检出(您可以将其存储在文本文件中。