0
こんにちは私は一般的なhttp要求でオブジェクトを作成できる汎用サービスを作成しました。Angular2でユーザーが認証されると、複数のオブジェクトのヘッダー(トークン)を設定する
私が今直面していますチャレンジは、ユーザーが認証されている場合、そのヘッダにそれぞれ作成されたオブジェクトにトークンを渡すことです(私はのlocalStorageに保存されている応答としてトークンを取得します)
そこで、基本的これらのカスタムHTTPオブジェクトは、任意のレベルで任意の場所(インジェクションごとにコンポーネントごとに)で作成できます。それらのすべてにまだ認証ヘッダーが設定されていません。ユーザーが認証されると、これらすべてのオブジェクトは認証ヘッダーが設定されます。
は、ここで以下plunker
export class App {
myHttpObject1;
constructor(private myAuth:MyAuth, private myDatabase:MyDatabase) {
this.name = 'Angular2 (Release Candidate!)'
this.myHttpObject1 = this.myDatabase.httpSchema('users')
this.myHttpObject1.log()
// this.myHttpObject1.someOtherMethodes()...
}
login(){
this.myAuth.login()
}
showHeaders(){
this.myHttpObject1.log()
}
}
のログインを模擬するためのサービスと一つです。
@Injectable()
export class MyDatabase{
private base_url:string;
private headers :Headers;
constructor(){
this.base_url = 'https://jsonplaceholder.typicode.com/';
this.headers = new Headers();
this.headers.append('Content-Type', 'application/json');
this.headers.append('Authorization','');
}
public httpSchema(path:string){
return new MyHttpObject(path, this.headers || new Headers())
}
}
class MyHttpObject{
constructor(public url:string, public headers:Headers){
}
log(){
console.log(this.url)
console.log(this.headers)
}
post(){
console.log('here could be a http post')
}
}
@Injectable()
export class MyAuth{
login(){
setTimeout(()=>{
console.log('logged In');
localStorage.setItem('token':'mytoken');
},2000)
}
}
こんにちはJohn、もう少し詳しいことを教えてください。またはリンクを追加しますか?ありがとう! –
私は注射器、その迎撃器を言った。これにより、ヘッダーを変更するために送信前にhttp要求をインターセプトすることができます。それはすべてのHTTPリクエスト.... http://www.illucit.com/blog/2016/03/angular2-http-authentication-interceptor/のためにそれを行います –