使用angularjs登录时的Ionic认证

Ionic authentication for login with angularjs

本文关键字:Ionic 认证 angularjs 登录 使用      更新时间:2023-09-26

ionic使用的是angularjs,对于登录系统,没有任何浏览器保存cookie或会话,以便对应用程序的每个部分进行身份验证。一种方法是在app.js:

中使用此保护。
$urlRouterProvider.otherwise('/login');

因为任何一个链接都不能访问到其他应用程序。当从服务器(mysql数据库)返回的答案是true时,我们可以这样使用:

$state.go('app.main');

这是个好主意吗?或者还有其他方法吗?

由于ionic本质上调用后端api,因此您可以实现任何标准api身份验证机制。

最常见的是有一个基于令牌的身份验证,高级工作流可以如下所示

1 - ionic应用程序调用后端服务器端点并获得令牌(通过传递某种加密密钥)

2 -后端服务器生成令牌(理想的给定时间段)并发送回ionic应用程序。

3 -此后,ionic在每个请求中发送令牌。(最好在请求头中)

要将令牌临时保存,可以使用简单的存储解决方案,如

>

对于我们的公司应用,我们对ionic应用和连接到sql数据库的节点服务器使用摘要访问身份验证(https://en.wikipedia.org/wiki/Digest_access_authentication)。一旦用户通过身份验证,我们向他们发送一个jwt (javascript web令牌)。然后我们可以在本地存储该网络令牌(如果他们检查自动登录选项),或者他们可以在应用程序重新打开时重新认证,我们给他们另一个网络令牌。到目前为止,这已被证明是一种安全有效的用户身份验证方法。这是一个使用json web令牌和angular的教程。http://www.toptal.com/web/cookie-free-authentication-with-json-web-tokens-an-example-in-laravel-and-angularjs

我强烈建议您签出John Papa的ng- demos,特别是使用JWT令牌的演示,因为这是您现在想要使用的。(这些不是ionic特有的,而是一般的angular.js应用)

基本上你有几件事需要做:

  • 处理所有需要检查用户是否通过身份验证的地方,并发出unauthorized事件

  • 处理事件并重定向到登录状态/路由

在上面的例子中,你基本上添加了拦截器(https://github.com/johnpapa/ng-demos/blob/master/ng-jwt/src/client/app/services/authInterceptor.js),它会查看由于not authorized而导致的web服务请求失败,并拒绝由$http request

返回的承诺。也

ionic使用的是angularjs,对于登录系统,没有任何浏览器来保存cookie或会话来验证应用程序的每个部分。

您确实可以使用localStorage/sessionStorage来存储令牌并将该令牌添加到所有请求中。这就是为什么您最好为您的web服务使用基于令牌的认证,而不是基于cookie的认证。