2016-11-18 63 views
1

Angular2 Typescript應用程序正在生成源.js文件。如何將jwt令牌應用於生成的Angular 2 JS文件?

在調試時,我觀察到授權標頭未定義。

我有jwt定義的定製服務令牌。

我該如何將相同的jwt令牌應用到生成的Angular2源代碼.js文件?

+0

檢查此設置標記在http標頭http://stackoverflow.com/questions/34464108/angular2-set-headers-for-every-request – Sriram

+0

你的問題不是很清楚,沒有代碼... ) – Maxime

+0

嗨,夥計們,我的問題是 - 代碼(ts/js)文件的安全性 - 如果任何瀏覽器詢問生成的代碼(ts/js),那麼您需要給予我們更多的幫助; ,如果沒有jwt令牌存在,則應該應用此安全性,可以被重定向登錄。 – HydTechie

回答

1

這件事與生成的js文件無關。最簡單,最快和最舒適的解決方案是使用npm模塊angular2-jwt

  • 安裝模塊npm install angular2-jwt
  • 配置app.module.ts這樣的:

    import { AUTH_PROVIDERS } from 'angular2-jwt'; 
    @NgModule({ 
        ... 
    
        providers: [ 
        AUTH_PROVIDERS 
        ], 
    
        ... 
    }) 
    
  • 然後,通過無處不在,你想用它在你的應用程序:

    import { AuthHttp } from 'angular2-jwt'; 
    this.authHttp.get('http://example.com/api/thing') 
        .subscribe(
        data => this.thing = data, 
        err => console.log(err), 
        () => console.log('Request Complete') 
    ); 
    

這樣,你的請求將被驗證如果您在名爲id_token的Cookie中擁有您的令牌。如果您想通過其他方法(localStorage,indexedDb ...)存儲您的令牌,請參閱模塊的文檔(https://github.com/auth0/angular2-jwt#configuration-options)以瞭解如何更改它,但這非常簡單。如果你需要它,我可以在這裏解釋它。

希望它有幫助。

0

據我瞭解你的短信,你只是想在http請求頭中發送令牌。我在我的應用程序上使用相同的策略,並且不使用任何額外的模塊。

我有一個認證請求,我存儲在localStorage的我的令牌:

this.http.post('/login', userCredentials).subscribe(
    token => localStorage.addItem('Authorization', token), 
    error => this.handleError(error) 
) 

然後,我剛剛從localStorage的獲得令牌,並在我的請求頭使用它:

let options = { headers: new Headers() }; 
let jwt = localStorage.getItem('Authorization'); 
options.headers.append('Authorization', jwt); 

return this.http.get('/api/request', options) 
      .map(result => result.json()); 

在我看來,如果你想解碼你的jwt,angular2-jwt是很有用的。