博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转载]ASP.NET Web API author
阅读量:5816 次
发布时间:2019-06-18

本文共 2321 字,大约阅读时间需要 7 分钟。

HTTP Basic 验证客户端的原理: 把HTTP头重的ContentType设置为:application/x-www-form-urlencoded 如果HTTP头没有Authorization,那么添加,并把这个设置为“Basic 用户名:密码”字符串组合的Base64编码。

代码片段:

HttpWebRequest request
=
(HttpWebRequest)HttpWebRequest.Create(url);
request.Method
=
"
GET
"
; request.ContentType
=
"
application/x-www-form-urlencoded
"
; request.Credentials
=
CredentialCache.DefaultCredentials;
//
获得用户名密码的Base64编码
string
code
=
Convert.ToBase64String(Encoding.ASCII.GetBytes(
string
.Format(
"
{0}:{1}
"
,
"
username
"
,
"
password
"
)));
//
添加Authorization到HTTP头
request.Headers.Add(
"
Authorization
"
,
"
Basic
"
+
code);
HttpWebResponse response
=
(HttpWebResponse)request.GetResponse(); StreamReader reader
=
new
StreamReader(response.GetResponseStream());
string
content
=
reader.ReadToEnd();

-----------------------------------------------------------

 

 

要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法:

  • 一是在请求头中添加Authorization: Authorization: "Basic 用户名和密码的base64加密字符串"
  • 二是在url中添加用户名和密码: http://userName:password@api.minicloud.com.cn/statuses/friends_timeline.xml

下面来看下对于第一种在请求中添加Authorization头部的各种语言的实现代码。

先看.NET的吧:

string
username
=
"
username
"
;
string
password
=
"
password
"
;
//
注意这里的格式哦,为 "username:password"
string
usernamePassword
=
username
+
"
:
"
+
password; CredentialCache mycache
=
new
CredentialCache(); mycache.Add(
new
Uri(url),
"
Basic
"
,
new
NetworkCredential(username, password)); myReq.Credentials
=
mycache; myReq.Headers.Add(
"
Authorization
"
,
"
Basic
"
+
Convert.ToBase64String(
new
ASCIIEncoding().GetBytes(usernamePassword)));
WebResponse wr
=
myReq.GetResponse(); Stream receiveStream
=
wr.GetResponseStream(); StreamReader reader
=
new
StreamReader(receiveStream, Encoding.UTF8);
string
content
=
reader.ReadToEnd();

-----------------------------------------------------

using System; using System.Web.Http;

using System.Net.Http;
publicclassAuthAttribute:AuthorizeAttribute
{
   
publicoverridevoidOnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
   
{
       
HandleUnauthorizedRequest(actionContext);
   
}
   
protectedoverridevoidHandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
   
{
       
var response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.Redirect);
        response
.Headers.Add("Location","http://www.google.com");
        actionContext
.Response= response;
   
}
}

转载地址:http://izmbx.baihongyu.com/

你可能感兴趣的文章
Java基础之String,StringBuilder,StringBuffer
查看>>
狼图腾读后感
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
查看>>
PIE.NET-SDK插件式二次开发文档
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
淘宝NPM镜像cnpm
查看>>
opennebula 开发记录
查看>>