Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android和iOS上使用angular处理nativescript中的注销_Angular_Nativescript_Angular2 Nativescript_Nativescript Angular - Fatal编程技术网

在android和iOS上使用angular处理nativescript中的注销

在android和iOS上使用angular处理nativescript中的注销,angular,nativescript,angular2-nativescript,nativescript-angular,Angular,Nativescript,Angular2 Nativescript,Nativescript Angular,我对NativeScript和Angular都是新手,因此我感谢任何帮助/指导。我正在运行Angular 8.2.14和nativescript 6.2.2 我正在为iOS和Android开发一个应用程序,一旦用户登录,它基本上会提供一个精心策划的任务列表和一些其他基本信息 当应用程序启动时,用户将看到一个登录组件。一旦用户通过身份验证,就会使用插件保存用户名、令牌和过期时间戳。我正在存储用户名和令牌,以便用户下次启动应用程序时不必再次登录 然后,用户通过this.router.navigate

我对NativeScript和Angular都是新手,因此我感谢任何帮助/指导。我正在运行Angular 8.2.14和nativescript 6.2.2

我正在为iOS和Android开发一个应用程序,一旦用户登录,它基本上会提供一个精心策划的任务列表和一些其他基本信息

当应用程序启动时,用户将看到一个登录组件。一旦用户通过身份验证,就会使用插件保存用户名、令牌和过期时间戳。我正在存储用户名和令牌,以便用户下次启动应用程序时不必再次登录

然后,用户通过
this.router.navigateByUrl(“/dashboard”)路由到仪表板

我遵循nativescript文档中的示例,将仪表板上操作栏中的“后退”导航按钮替换为调用函数的注销按钮。这在iOS中非常有效。用户点击注销按钮,我清除存储在安全存储中的用户名和安全令牌

问题是,在Android中,用户有一个后退按钮,而且
标记实际上没有出现在操作栏中

LoginComponent的本质是:

导出类LoginComponent实现OnInit{
secureStorage=新的secureStorage();
构造函数(专用路由器:路由器,专用用户服务:用户服务){
this.user=新用户();
}
恩戈尼尼特(){
//检查用户是否保存了会话
var sessionUser=this.userService.checkSavedSession();
如果(sessionUser.expires>now){
这个.router.navigateByUrl(“/dashboard”);
}
}
登录(){
//当用户点击登录视图上的提交时调用
this.userService.login(this.user)
.订阅(
//如果用户已授权,则存储会话
此文件为.secureStorage.set({
密钥:“appSession”,
值:JSON.stringify({
uid:resp.uid,
过期日期:resp.exp,
令牌:resp.token
})
});
//转到仪表板
这个.router.navigateByUrl(“/dashboard”);
);
}
}
仪表板视图:


仪表板组件包含一个注销函数,用于清除安全存储并将用户返回登录

logout(){
this.secureStorage.removeAll().then(success=>console.log(“清除的存储”);
this.location.back();
}
我尝试过订阅导航事件和位置事件,看看是否可以检测到用户在仪表板上按下后退按钮。我可以检测到这种情况,但我也想通知用户他们即将注销,并给他们一个机会改变主意,因为他们实际上没有点击日志出去按钮,我好像弄不清那部分


如果有任何帮助,我们将不胜感激。

在从登录导航到仪表板时,您可以清除历史记录。如果清除历史记录,则单击“后退”按钮将关闭应用程序,而不是让用户重新登录

此外,您必须使用代替Angular的路由器

this.routerExtensions.navigateByUrl("/dashboard", {clearHistory: true});
您还可以收听后退按钮(
activityBackPressed
)事件,必要时覆盖默认行为。在文档中了解更多信息


注意:我猜您不想通过“后退”按钮将用户注销,如果您愿意,您可能宁愿将令牌存储在变量中,而不是使用安全存储。安全存储通常用于在应用程序重新启动后保持用户登录。

从登录导航到仪表板时,您可以清除历史记录。如果若确实如此,点击“后退”按钮将关闭应用程序,而不是让用户重新登录

此外,您必须使用代替Angular的路由器

this.routerExtensions.navigateByUrl("/dashboard", {clearHistory: true});
您还可以收听后退按钮(
activityBackPressed
)事件,必要时覆盖默认行为。在文档中了解更多信息


注意:我想你不会想通过“后退”按钮注销用户,如果你想,那么你可能宁愿将令牌存储在变量中,而不是使用安全存储。安全存储通常用于在应用程序重新启动后保持用户登录。

谢谢@Manoj。这太完美了。对于angular和nativescript I来说都是新手有点过载:我应该使用angular功能还是nativescript功能。我实际上不想使用back按钮注销用户,但我愿意接受,如果我无法以任何其他方式使其工作。这就是为什么,如果back按钮确实注销了用户,我想警告他们将会发生什么pen.谢谢@Manoj.这太完美了。作为angular和nativescript的新手,我有点过载了:我应该使用angular功能还是nativescript功能。我实际上不想用back按钮注销用户,但如果我不能以其他方式工作,我愿意接受。这就是为什么,如果不能的话“后退”按钮确实让他们退出了我想警告他们即将发生的事情。