我的 Angular 项目成功地使用AngularFireAuth来自@angular/fire的注入连接到本地 Firebase 身份验证模拟器。我使用这些来源作为我的实现参考:
Firebase 文档:检测您的应用以与身份验证模拟器对话
StackOverflow:如何配置 AngularFireAuthModule 和/或 AngularFireAuth 以指向身份验证模拟器
但是,一旦我重新加载页面,登录状态就会丢失,我必须再次登录。
首先,我尝试在 Angular 组件构造函数中像这样设置持久性:
constructor( private _fireauth: AngularFireAuth) {
this._fireAuth.useEmulator(`http://${location.hostname}:9099/`);
this._fireauth.setPersistence(firebase.auth.Auth.Persistence.LOCAL);
}
Run Code Online (Sandbox Code Playgroud)
这没有什么区别。然后我在浏览器网络控制台中注意到,firebase 库在页面加载后确实找到了本地存储的会话,但最初尝试联系谷歌服务器进行验证,这当然失败了,因为它是本地模拟器会话:
这似乎是有道理的,因为_fireAuth.useEmulator()仅在组件构造函数中调用。应用程序的其他部分,例如AngularFireAuthGuard可能会尝试更早地访问身份验证状态方式。useEmulator()在应用程序的任何其他部分可能尝试访问身份验证状态失败之前,尝试调用几次:
Attempt1:调用useEmulator()在@Injectable({providedIn: 'root'})又名服务构造Attempt2:提供一个APP_INITIALIZER在应用程序被引导之前执行代码的方法:export function initializeApp1(afa: AngularFireAuth): any {
return () => {
return new Promise(resolve => {
afa.useEmulator(`http://${location.hostname}:9099/`);
setTimeout(() => resolve(), 5000);
});
};
}
@NgModule({
declarations: [
...
],
imports: [ …Run Code Online (Sandbox Code Playgroud) 简短版本: 如果我想从头开发一个全新的jsDoc模板,我需要阅读什么来理解jsDoc的作用,我的模板必须提供什么接口以及我可以使用哪些数据?
长版本: 我现在已经使用jsDoc一段时间了,并且遇到了一些我想要添加的标签以及我希望从我的文档中生成的概述页面.到目前为止,我使用usejsdoc.org解决了所有"用户问题" .我甚至设法添加了一个新的jsdoc插件,添加了一些标签.但是,我找不到任何有关如何为jsdoc创建模板的开发人员文档.我使用ink-docstrap,所以我点击了模板文件夹(publish.js,/ tmpl等)的方式,并以某种方式了解了一切是如何工作的.但它非常耗时.
我应该阅读什么才能成为jsDoc模板专业人士?
Tl;dr:似乎该core.module样式不再是官方Angular 样式指南的一部分,但它肯定是最近才被删除的。导入单例服务的新最佳实践是什么,为什么删除了样式?
我刚才看了这个就开始接触角材料指南,并且声明
Then (as per the Angular Style Guide) I created a Core module
Run Code Online (Sandbox Code Playgroud)
我查看了Style Guide,但似乎无法找到此处引用的指南。在我的搜索过程中,我偶然发现了以下来源:
甲博文从十一月'18说明core.module和shared.module之间的差异。
这个问题来自17 年 10 月,对 core.module 有非常详细的解释。
这个问题来自18年7 月,没有引起注意。
最后一个问题指的是core.module这个链接的样式:
https://angular.io/guide/styleguide#core-feature-module
Run Code Online (Sandbox Code Playgroud)
似乎#core-feature-module锚点已被删除,不再是官方 Angular 风格指南的一部分。仅保留共享功能模块指南。
为什么core.module删除了指南?导入服务等单例的新最佳实践是什么?
据我了解, Angular2 中的CanActivate接口仅对路由更改有效。因此,如果我有一个页面p需要用户登录,我可以创建一个实现 CanActivate 接口的防护,该接口将允许RouterModule仅在用户登录时激活p 。
但是当p处于活动状态并且用户注销时会发生什么?我试图找到检查是否允许页面处于活动状态而不更改 RouterModule 中的路由的最佳实践,但我找不到任何有用的东西。假设页面p处于活动状态并且需要登录。现在,当 p 处于活动状态时,会以某种方式触发注销,但不涉及路由更改。假设服务器响应 401,并且应用程序注意到用户不再登录。检查活动页面是否需要登录并采取相应措施的最佳做法是什么?活动页面可能不需要登录。在这种情况下,一切都应该保持原样。