如何将WebAPI身份认证中的Basic基础认证方法改写为高效的长尾关键词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计674个文字,预计阅读时间需要3分钟。
一、WebApi中为什么需要身份认证?我们在使用WebApi时,通常是通过URL去获取数据。也就是说,任何人只要知道了URL地址,就可以随意访问后端的服务接口,甚至可以随意修改数据库中的数据。为了防止这种情况,我们需要在WebApi中实现身份认证。
二、为什么需要身份认证?任何人都知道URL地址,就可以随意访问后端的服务接口,甚至可以随意修改数据库中的数据。
一、WebApi中为什么需要身份认证
我们在使用WebApi的时候,都是通过URL去获取数据。也就是说,任何人只要知道了URL地址,就能随意的访问后台的服务接口,就可以访问或者修改数据库数据了,这样就会导致很严重的后果。
1、我们不加身份认证,匿名用户可以直接通过url随意访问接口:
2、增加了身份认证之后,只有带了票据的请求才能访问对应的接口。
二、常见的认证方式
WebApi中常见的认证方式有如下几种:
- FORM身份验证
- 集成WINDOWS验证
- Basic基础认证
- Digest摘要认证
三、Basic基础认证
Basic基础认证原理
Basic认证的基本原理就是加密用户信息生成Ticket,每次请求后端API接口的时候把生成的Ticket信息加到localhost:20033/api/users?account="+$("#acc").val().trim()+"&password="+$("#pwd").val().trim(), type:"Get", dataType:"json", "headers": { "Content-Type": "application/json", "cache-control": "no-cache" }, success:function(data){ if(result.Result){ ticket=data.Ticket; }else{ alert("失败"); } }, error:function(data){ alert(data); } }); }; function Test(){ alert(ticket); $.ajax({ url:'localhost:20033/api/users', type:"Get", dataType:"json", beforeSend:function(XHR){ //发送ajax请求之前向http的head里面加入验证信息 XHR.setRequestHeader('Authorization','BasicAuth '+ticket); }, success:function(data){ alert(data); }, error:function(data){ alert(data); } }); }; </script> </head> <body> <div> <div> <label>用户名:</label> <input type="text" id="acc"> </div> <div> <label>密码:</label> <input type="password" id="pwd"> </div> <div> <input type="button" id="btnLogin" onclick="Login()" value="登录"> </div> <div> <input type="button" id="GetAccount" onclick="Test()" value="测试"> </div> </div> </body> </html>
这里需要说明的是,我们在发送ajax请求之前,通过XHR.setRequestHeader('Authorization', 'BasicAuth ' + Ticket); 这句向http请求的Head里面添加Ticket信息。
通过上面的几步就可以达到Basic认证的效果了。
注意:后端的WebApi接口要配置允许跨域访问。
4、优化
每增加一个控制器,都需要在相应的控制器上面加[BasicAuthorize]特性,可以定义一个公共的控制器父类,该父类继承自ApiController,然后其他控制器继承该父类。
到此这篇关于Web API身份认证解决方案之Basic基础认证的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。
本文共计674个文字,预计阅读时间需要3分钟。
一、WebApi中为什么需要身份认证?我们在使用WebApi时,通常是通过URL去获取数据。也就是说,任何人只要知道了URL地址,就可以随意访问后端的服务接口,甚至可以随意修改数据库中的数据。为了防止这种情况,我们需要在WebApi中实现身份认证。
二、为什么需要身份认证?任何人都知道URL地址,就可以随意访问后端的服务接口,甚至可以随意修改数据库中的数据。
一、WebApi中为什么需要身份认证
我们在使用WebApi的时候,都是通过URL去获取数据。也就是说,任何人只要知道了URL地址,就能随意的访问后台的服务接口,就可以访问或者修改数据库数据了,这样就会导致很严重的后果。
1、我们不加身份认证,匿名用户可以直接通过url随意访问接口:
2、增加了身份认证之后,只有带了票据的请求才能访问对应的接口。
二、常见的认证方式
WebApi中常见的认证方式有如下几种:
- FORM身份验证
- 集成WINDOWS验证
- Basic基础认证
- Digest摘要认证
三、Basic基础认证
Basic基础认证原理
Basic认证的基本原理就是加密用户信息生成Ticket,每次请求后端API接口的时候把生成的Ticket信息加到localhost:20033/api/users?account="+$("#acc").val().trim()+"&password="+$("#pwd").val().trim(), type:"Get", dataType:"json", "headers": { "Content-Type": "application/json", "cache-control": "no-cache" }, success:function(data){ if(result.Result){ ticket=data.Ticket; }else{ alert("失败"); } }, error:function(data){ alert(data); } }); }; function Test(){ alert(ticket); $.ajax({ url:'localhost:20033/api/users', type:"Get", dataType:"json", beforeSend:function(XHR){ //发送ajax请求之前向http的head里面加入验证信息 XHR.setRequestHeader('Authorization','BasicAuth '+ticket); }, success:function(data){ alert(data); }, error:function(data){ alert(data); } }); }; </script> </head> <body> <div> <div> <label>用户名:</label> <input type="text" id="acc"> </div> <div> <label>密码:</label> <input type="password" id="pwd"> </div> <div> <input type="button" id="btnLogin" onclick="Login()" value="登录"> </div> <div> <input type="button" id="GetAccount" onclick="Test()" value="测试"> </div> </div> </body> </html>
这里需要说明的是,我们在发送ajax请求之前,通过XHR.setRequestHeader('Authorization', 'BasicAuth ' + Ticket); 这句向http请求的Head里面添加Ticket信息。
通过上面的几步就可以达到Basic认证的效果了。
注意:后端的WebApi接口要配置允许跨域访问。
4、优化
每增加一个控制器,都需要在相应的控制器上面加[BasicAuthorize]特性,可以定义一个公共的控制器父类,该父类继承自ApiController,然后其他控制器继承该父类。
到此这篇关于Web API身份认证解决方案之Basic基础认证的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

