使用angularjs登录时的Ionic认证
Ionic authentication for login with angularjs
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的认证。
- 无法在Ionic select中预先选择最后一个选项
- 如何在Ionic Android中将Javascript注入到web视图中
- Ionic和angularjs嵌套步骤应用程序
- 如何在Ionic2测试版中包含Ionic.io服务
- Ionic-item在导航栏中进行双向数据绑定
- SqlStorage Ionic 2作为服务/提供程序
- Ionic V1.3-标签-带条件的徽章样式<离子选项卡>
- 为什么当我尝试在Ionic中使用列表时会出现此JavaScript错误
- using LocalStorage ionic 2
- 将数据传递给由服务创建的Ionic模态
- OSM-离线查询我的IONIC/CORDOVA项目
- 如何从mac上完全删除Ionic和Cordova安装
- Dropbox oauth认证的IF语句的第二部分是't已触发
- ionic幻灯片框中的每张幻灯片都有不同的HTML文件
- 未在angularJS和Ionic中加载模板
- 从Base64 Ionic编码和解码图像
- Ionic将firebase注入工厂,同时将控制器和服务保存在不同的文件中
- 使用angularjs登录时的Ionic认证
- 我如何将Twilio's 2因素短信认证与Firebase和Ionic (Javascript)集成?
- $http后端为Sails.js的Ionic应用的认证