我们有一系列产品 内置在每个都有的Web服务器中 一个登录页面,一个客户想要的 创建一个他们记录的Web门户 一次,从那里他们可以简单地 点击任何设备(外部 网站),它会自动 登录该站点并重定向它们 到登录屏幕后的页面。 门户网站正在使用ASP.NET MVC 外部设备是基于Windows CE的 运行嵌入式Web服务器的单元 可以在刮擦上找到很多,但不是 在事件发生后重定向很多。 更多信息:抱怨不存在 详细,外部网站 使用自定义身份验证,它是一个 表格填写,然后与a谈话 自定义密码引擎 设备,使用脚本来检测是否 结果很好,然后重定向 登录页面的索引页面。 输入基本用户名和密码 形式,所有这些都设置为 所有系统都一样,所以很难 编码,客户不想要密码 在每个设备上,但被迫 设备软件。没有饼干 用过的。基本上,用户被呈现 与所有的一系列链接 设备(网站本质上)何时 他们点击他们想要的链接 取而代之的是主要的“索引”页面 然后必须运行“登录” 页。
更新:已经成功设法导航目标站点并使用HttpWebRequest和HttpWebResponse登录,所以我现在在HttpWebResponse中加载了正确的页面,剩下的问题是我现在如何重定向或打开一个新的浏览器来显示该HttpWebResponse和继续在登录的目标站点上导航。
答案 0 :(得分:1)
如果您使用的是basic authentication,则无法进行此操作。正如您所见,您可以执行HttpWebRequest并传递凭据,但这是在服务器端完成的,您无法继续导航。它的工作方式是浏览器需要设置基本身份验证使用的凭据头,这只能使用登录弹出窗口完成。某些类型的IE可能支持以下URL:http://username:password@somesite.com
提供凭据,但由于显而易见的原因,不确定是否可以与其他浏览器一起使用。
答案 1 :(得分:0)
您可以准备脚本,创建httprequest,试试看 GreaseMonkey script to auto login using HTTP authentication
答案 2 :(得分:0)
我使用WPF Web浏览器控件实现了以下功能,以自动登录到站点。我发现,为了能够在没有授权标题丢失或删除的情况下导航网站,我必须执行以下操作,否则每个新页面都会再次提示用户。此解决方案也不需要用户:password @ site语法启用。
private bool _redirected = false;
private const string BaseUrl = @"http://mySite";
private void Navigate()
{
var helpUrl = BaseUrl;
var authHeader = GetAuthHeader();
_docWindow.Browser.Navigate(helpUrl, string.Empty, null, authHeader);
_docWindow.Browser.Navigating += Browser_Navigating;
}
private string GetAuthHeader()
{
byte[] authData = UnicodeEncoding.UTF8.GetBytes(_userName + ":" + _password);
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData);
return authHeader;
}
void Browser_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
{
if (_redirected)
{
_redirected = false;
return;
}
var newPage = BaseUrl + e.Uri.AbsolutePath;
e.Cancel = true;
_redirected = true;
_docWindow.Browser.Navigate(newPage, string.Empty, null, GetAuthHeader());
}