so the last known example (https://github.com/auth0/angular2-jwt) showed doing this in app.module.ts
import {Storage} from "@ionic/storage";
let storage: Storage = new Storage();
export function getAuthHttp(http: Http) {
return new AuthHttp(new AuthConfig({
globalHeaders: [{'Accept': 'application/json'}],
tokenGetter: (() => storage.get('id_token'))
}), http);
}
which throws the error Supplied parameters do not match any signature of call target.
on the new Storage line.
is there a way around this? I tried doing many different approaches but how can I get a valid ref to storage in that function?
ok I was able to use it by moving my code to a separate file ( I just put it in my AuthService)
this will not work in app.module.ts
then appending it in this fashion
export function AuthHttpServiceFactory(http: Http, options: RequestOptions) {
let _storage = new Storage({});
return new AuthHttp(new AuthConfig({
noJwtError: true,
tokenGetter: (() => _storage.get('id_token')),
globalHeaders: [{'Content-Type':'application/json'}],
}), http, options);
}
You should not be directly instantiating Storage
(or virtually anything else in an Angular app). Use DI the same way you are doing so for Http
.
1 Like
I agree, except when I did it that way, storage is undefined
and when I wrap it with a storage.ready().then(() => {
then I get in a nasty loop
Are you sure you included its module as described here?
yes, it works perfectly for other things, I suspect it is a timing thing as the AuthHttpServiceFactory is getting wired in the app.module.ts right away
The solution suggested in angular2-jwt #323 is better than what you are doing.
agreed, that seems to work better. was looking for awhile and hadn’t seen that yet.