您的位置:首页 > 其它

在服务器端用当前登入的用户身份请求某一页面

2010-07-02 18:03 148 查看
如果是Forms认证的话,实现起来很简单,因为相关的凭据都在cookie中,只要把所有的cookie都付给HttpWebRequest就可以了.

代码如下:

1 Uri uri = new Uri(url);
2 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
3 CookieContainer c = new CookieContainer();
4 for (int i = 0; i < curRequest.Cookies.Count; i++)
5 {
6 c.Add(new Cookie(curRequest.Cookies[i].Name, curRequest.Cookies[i].Value,
7 curRequest.Cookies[i].Path, uri.Host));
8 }
9 request.CookieContainer = c;
request.Method = "GET";
request.AllowAutoRedirect = false;
WebResponse response = request.GetResponse();

但是如果是Windows集成认证的话,身份凭据就不在cookie中的.因此需要调用LogonUserIdentity.Impersonate()来模拟,然后再取用户身份信息.

代码如下:

//HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //HttpRequest curRequest = Page.Request;

1 using (WindowsImpersonationContext context = curRequest.LogonUserIdentity.Impersonate())
2 {
3 NetworkCredential cred2 = (NetworkCredential)CredentialCache.DefaultCredentials;//再取就是登录的用户而不是当前iis运行账户
4 CredentialCache cache =new CredentialCache();
5 cache.Add(request.RequestUri, "NTLM", cred2);
6 request.Credentials = cache;
7 request.Method ="GET";
8 request.AllowAutoRedirect =false;
9 WebResponse response = request.GetResponse();
context.Undo();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐