私のアプリケーションにログインするとき(認証トークンを含む)にユーザー情報を保持するために、currentUserという角型ファクトリがあります。このファクトリは多くのコントローラに注入されており、これらのケースではcurrentUser.getProfile()を使用しても問題はありません。
私はまた、それぞれがAPI呼び出しを行うための$リソースオブジェクトを返すさまざまなファクトリを持っています。これらの工場では、currentUserを注入して、認証ヘッダーに追加する認証トークンを取得できるようにします。ここではこれらの工場の一つの簡単な例である:私は1つの私のコントローラに値をログインしたときにそれがあるにもかかわらず、
angular
.module("common.services")
.factory("userAccount",
["$resource",
"appSettings",
"currentUser",
userAccount])
function userAccount($resource, appSettings, currentUser) {
return {
logout: $resource(appSettings.serverPath + "/api/Account/Logout", null,
{
'logoutUser': {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + currentUser.getProfile().token
}
}
})
}
}
はしかし、currentUser.getProfile()トークンは常に空で、私はunathorisedエラーを取得します空ではない。これを引き起こす原因は何ですか?
編集:問題は、ちょうど私がcurrentUser.getProfileを交換するとき()localStorage.getItem(「トークン」)をトークンとして、CurrentUserに工場でもないようだ私は同じ問題を抱えているように見えます。コントローラーはローカルに格納されたトークンを正しくログに記録しますが、API要求のヘッダーには追加されません。
ありがとうございました、これは今動作するようです! – shadowsora
また、httpInterceptorsのしくみ – charlietfl