您的位置:首页 > 理论基础 > 计算机网络

ionic2 身份验证

2017-11-14 11:50 176 查看
因为之前遇到一个问题,有人不经过前台页面直接通过访问接口,多次提现,所以为了安全起见,想到用身份验证。

为什么需要身份验证

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前台需要做的内容,希望对大家有所帮助!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ionic2 http 身份验证