Я внедряю приложение для Android / IOS в NativeScript
на Angular2
.Я хотел бы сохранить учетные данные для входа в систему при перезагрузке и закрытии приложения.Я читал, что application-settings
является предпочтительным механизмом хранения токенов учетных данных, однако все примеры работают со строковыми токенами, возвращенными из API.
API-интерфейс аутентификации, который я разрабатываю, предоставляет файл cookie с идентификатором сеанса, поскольку он также используется для нашего веб-интерфейса.
Я могу сказать, что этот файл cookie временно сохраняется, так как я могучтобы выполнить авторизованные запросы к API после входа в систему, однако не знаю, где хранится этот контент и как сделать его постоянным, выполняемый вызов упрощается до следующего:
import { HttpClient } from "@angular/common/http";
private http: HttpClient
login(url, data) {
this.http.post(url, data, {withCredentials: true})
.then((result) => console.log(JSON.stringify(result)))
}
Я вижу, чтоpost(...)
может быть слишком высокого уровня, чтобы получить информацию о сеансе / куки.Я ожидаю, что размещение полученного cookie-файла в систему хранения и его перезагрузка в конструкторе службы ранней загрузки должно позволить мне выйти из приложения и запустить его снова.
Первый вопрос: не ошибаюсь ли я??Имеет ли смысл использовать этот стиль аутентификации в приложении nativescript?Из комментария @manoj я вижу, что некоторые из этих процессов могут не поддерживаться, но я не уверен, способствовала ли моя первоначальная формулировка вопросов их ответу.
Второй вопрос, есть ли еще один звонок, который мне следует ответить?что делает?Где находится текущий магазин печенья?Могу ли я установить текущее место хранения как постоянное и удалить при выходе из системы?
Я не уверен, что задаю правильные вопросы для решения моей проблемы, поэтому любые рекомендации очень ценятся.
[править]
Мне показалось, что я нашел способ хотя бы проверить информацию о сеансе в своем приложении.Я видел, что я должен иметь возможность добавлять информацию о сеансе ко всем запросам, используя `Interceptor.
@Injectable()
export class LogInterceptorService implements HttpInterceptor {
private logger: Logger;
constructor(loggerService: LoggerService) {
this.logger = loggerService.getLogger(this.constructor.name);
}
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
this.logger.debug("ABC -> XYZ");
if (this.logger.isDebugEnabled()) {
this.logger.debug(JSON.stringify(req));
}
return next.handle(req).pipe(
tap(
response => {
this.logger.debug("XYZ -> ABC");
this.logger.debug(
`Oh boy we got an answer :: ${JSON.stringify(response)}`
);
},
error => {
this.logger.debug("XYZ -> ABC");
this.logger.debug("Something might be burning back there");
}
)
);
}
}
К сожалению, ответы на самом деле не содержат информацию о сеансе.Почему я могу делать аутентифицированные запросы?