我有一个在IIS 7上运行并使用Windows身份验证的ASP.NET应用程序。出于测试目的,我们的每个测试用户都在域上为他们设置了5个测试帐户。他们需要多个帐户,因为他们需要在应用程序中测试不同的角色。用户正在使用IE7。
我可以看到的允许用户在不同帐户下登录应用程序的选项是:
1)注销Windows并以所需的测试帐户重新登录。 (对用户来说不太实用)。
2)让用户右键单击Internet Explorer并选择“运行方式...”,然后输入所需测试帐户的凭据。 (对用户来说不是很直观。当像这样运行时,某些功能在IE7中无法正常工作,例如书签,打印机)
3)使用Firefox或Chrome。 (不幸的是不是一个选项)
4)不要使用Windows身份验证(需要Windows身份验证)
5)更新IE选项以防止它自动登录到站点(这会起作用,但对于用户来说,这将是一个烦恼,因为他们使用许多其他使用Windows身份验证的站点)。
6)在IIS / ASP.NET中找到防止IE自动登录的方法? (我没有看到任何这样做但有兴趣听到任何建议)。
有人能想到更好的方法吗?
感谢。
答案 0 :(得分:1)
我相信#2是你最好的基础。
对用户来说是直观的:可以在各种测试帐户下启动的Windows窗体应用程序如何?
我打算尝试构建一个快速测试应用程序,但首先找到了这篇文章:
http://fraserchapman.blogspot.com/2007/07/programmatic-runas-in-c.html
几分钟后,我开始工作了:
using System;
using System.Diagnostics;
namespace TestRunAs
{
class Program
{
static void Main(string[] args)
{
RunAs("C:\\Program Files\\Internet Explorer\\iexplore.exe", "TestUser5", "TestUser5Password");
}
static void RunAs(string path, string username, string password)
{
var secureString = new System.Security.SecureString();
foreach (char c in password)
{ secureString.AppendChar(c); }
ProcessStartInfo myProcess = new ProcessStartInfo(path);
myProcess.UserName = username;
myProcess.Password = secureString;
myProcess.UseShellExecute = false;
Process.Start(myProcess);
}
}
}
显而易见的缺点:密码在您的应用内部浮动,所以我希望在您的项目完成后将删除这些“测试帐户”。
跟进:我四处寻找有关SecureString的信息。 MSDN的用法示例完全您正在尝试做的事情,只需使用NotePad:
http://msdn.microsoft.com/en-us/library/system.security.securestring.aspx
答案 1 :(得分:1)
建议:您不能使用VMware或虚拟PC,并让用户在虚拟PC之间切换进行测试。