ionic2 身份验证
2017-11-14 11:50
176 查看
因为之前遇到一个问题,有人不经过前台页面直接通过访问接口,多次提现,所以为了安全起见,想到用身份验证。
具体可以参考http://www.cnblogs.com/landeanfen/p/5287064.html
但是该链接的前台用的是jquary的写法,在ionic2中我们要稍作修改(参考https://stackoverflow.com/questions/34464108/angular2-set-headers-for-every-request)
1、用命令ionic cordova g provider httpClient添加一个服务
2、该服务是重新建议一个http服务,使在请求时加上Authorization(默认的http服务是不需要传Authorization)
3、在需要身份验证的provider中引入HttpClientProvider
![](https://img-blog.csdn.net/20171114143121704?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzgxOTEyMjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如图所示,需要身份验证的,用http中的方法,也就是我们自定义的方法;不需要身份验证的,用http_1,也就是默认的http方法。
4、加上了身份验证以后,我们还想让验证不用过时,回到登录页面,重新登录。因为验证不通过时报401错误,我们前台怎么判断这个错误,并给出判断出错误后该执行什么方法呢?
相关文章http://blog.csdn.net/yy228313/article/details/72636895
我们在HttpClientProvider中加入一下方法
5、在需要身份验证的provider中,如下所示,引入dealError()方法
以上是http://www.cnblogs.com/landeanfen/p/5287064.html的改进,当后台传给我们一个身份验证的票据时,ionic2前台需要做的内容,希望对大家有所帮助!
为什么需要身份验证
1、我们不加身份认证,匿名用户可以直接通过url随意访问接口
2、增加了身份认证之后,只有带了我们访问票据的请求才能访问我们的接口
具体可以参考http://www.cnblogs.com/landeanfen/p/5287064.html
但是该链接的前台用的是jquary的写法,在ionic2中我们要稍作修改(参考https://stackoverflow.com/questions/34464108/angular2-set-headers-for-every-request)
1、用命令ionic cordova g provider httpClient添加一个服务
2、该服务是重新建议一个http服务,使在请求时加上Authorization(默认的http服务是不需要传Authorization)
import { Injectable } from '@angular/core'; import {Http, Headers} from '@angular/http'; @Injectable() export class HttpClientProvider { constructor(public http: Http) {} createAuthorizationHeader(headers: Headers) { headers.append('Authorization', 'BasicAuth ' +'xxxxxxxxxxxxx'); } get(url,data) { let headers = new Headers(); this.createAuthorizationHeader(headers); return this.http.get(url, { headers: headers, params:data.params }); } post(url, data) { let headers = new Headers(); this.createAuthorizationHeader(headers); return this.http.post(url, data, { headers: headers }); } }
3、在需要身份验证的provider中引入HttpClientProvider
如图所示,需要身份验证的,用http中的方法,也就是我们自定义的方法;不需要身份验证的,用http_1,也就是默认的http方法。
4、加上了身份验证以后,我们还想让验证不用过时,回到登录页面,重新登录。因为验证不通过时报401错误,我们前台怎么判断这个错误,并给出判断出错误后该执行什么方法呢?
相关文章http://blog.csdn.net/yy228313/article/details/72636895
我们在HttpClientProvider中加入一下方法
dealError(error:any){ let errMsg = (error.message)?error.message: error.status?'${error.status}-{error.statusText}':'Server error'; if(error.status==401||error.status==500){ console.log('验证不通过') } return Observable.throw(errMsg); }
5、在需要身份验证的provider中,如下所示,引入dealError()方法
//通过用户ID获取用户信息 getUserById(user_id:string):Observable<any>{ return this.http.get(this.coreService.baseUrl+'/Inf_User/GetUserByID',{params:{user_id:user_id}}) .map(res=>res.json()).catch(data=>this.http.dealError(data)); }
以上是http://www.cnblogs.com/landeanfen/p/5287064.html的改进,当后台传给我们一个身份验证的票据时,ionic2前台需要做的内容,希望对大家有所帮助!
相关文章推荐
- 如何更改sql server 2005中的身份验证模式并且更改SA密码
- 【转】XP远程桌面连接2008提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证 .
- Shiro处理简单的身份验证的分析及实例
- 20130117-使用Grails Shiro Plugin实现身份验证03
- ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统
- 改变SQL2005身份验证模式
- ASP.NET MVC:窗体身份验证及角色权限管理示例
- GOOGLE ADSENSE广告联盟收不到PIN码_快速表单身份验证PIN码方法
- HIVE身份验证
- 修改SQL Server 2005 Express身份验证和sa密码
- IIS的各种身份验证详细测试
- 关于Sa系列用户不能登录,只能本地windows身份验证的说明
- 100人微信群继续加入者须身份验证?
- ASP.Net 2.0 窗体身份验证机制-转+自己代码注释示例与更详细的说明
- 无password身份验证:安全、简单且部署高速
- ASP.net的身份验证方式有哪些?分别是什么原理?
- WCF安全认证之UserName身份验证
- 让XP远程桌面连接支持网络身份验证
- 怎样配置 WSS 以使用 Kerberos 身份验证(下)
- IdentityServer4 使用OpenID Connect添加用户身份验证