【问题标题】:Two Step authentication in IONICIONIC 中的两步验证
【发布时间】:2016-08-08 10:05:34
【问题描述】:

Authentication Flow Chart

首先我不是专业人士,只是从 IONIC 框架开始。

我正在尝试完成如上图所示的身份验证。

我想做什么?

首先,在加载我的应用程序时,它会检查用户是否登录。如果用户已登录,则他/她将被重定向到仪表板。

如果用户未登录,系统会检查用户是否在等待验证码

如果用户正在等待验证码,则会显示INPUT验证表单。

否则,用户将被定向到 INPUT 用户名表单。

到目前为止我做了什么?

我为用户名输入、验证码和仪表板创建了 3 个控制器。我的服务处理与我的服务器的后端通信,并将身份验证密钥和必要的用户凭据存储在本地存储中。
我正在为我的 REST API 使用 PHP SlimFramework。

我的问题

  1. 如何在 ionic 应用加载时检查用户是否已登录或正在等待验证码。

【问题讨论】:

  • 您可以在本地存储一个包含用户状态的变量,并检查设备就绪情况的状态并据此重定向。

标签: angularjs authentication ionic-framework


【解决方案1】:

如何检查用户是否登录

您可以通过检查本地存储中是否存在令牌密钥来检查用户是否已登录,如下所示:

angular.module('starter') .service('AuthService', function($q, $http, USER_ROLES) { var LOCAL_TOKEN_KEY = 'yourTokenKey'; var 用户名 = ''; var isAuthenticated = false; var 角色 = ''; var authToken; 函数 loadUserCredentials() { var token = window.localStorage.getItem(LOCAL_TOKEN_KEY); 如果(令牌){ 使用凭证(令牌); } } 功能 storeUserCredentials(令牌){ window.localStorage.setItem(LOCAL_TOKEN_KEY, token); 使用凭证(令牌); } 功能使用凭据(令牌){ 用户名 = token.split('.')[0]; isAuthenticated = true; authToken = 令牌; 如果(用户名 == 'admin'){ 角色 = USER_ROLES.admin } 如果(用户名 == '用户'){ 角色 = USER_ROLES.public } // 将令牌设置为请求的标头! $http.defaults.headers.common['X-Auth-Token'] = 令牌; } 功能破坏用户凭据(){ authToken = 未定义; 用户名 = ''; isAuthenticated = false; $http.defaults.headers.common['X-Auth-Token'] = undefined; window.localStorage.removeItem(LOCAL_TOKEN_KEY); } var login = 函数(名称,密码){ 返回$q(函数(解决,拒绝){ if ((name == 'admin' && pw == '1') || (name == 'user' && pw == '1')) { // 发出请求并从您的服务器接收您的身份验证令牌 storeUserCredentials(name + '.yourServerToken'); resolve('登录成功。'); } 别的 { reject('登录失败。'); } }); }; var注销=函数(){ 销毁用户凭据(); }; var isAuthorized = function(authorizedRoles) { if (!angular.isArray(authorizedRoles)) { 授权角色 = [授权角色]; } return (isAuthenticated && authorizedRoles.indexOf(role) !== -1); }; 加载用户凭据(); 返回 { 登录:登录, 注销:注销, isAuthorized: isAuthorized, isAuthenticated: function() {return isAuthenticated;}, 用户名:函数(){返回用户名;}, 角色:函数(){返回角色;} };

这是用户身份验证服务的典型示例。在加载应用程序时,您检查授权令牌是否存在,如果不存在则表示用户已注销。

您也可以应用类似的技术来检查用户是否在等待验证码。

验证码技术

  1. 在为特定用户发送验证码后,您的数据库中可能会有一个字段设置为 false
  2. 一旦用户获取代码并将其输入到表单中,它会根据数据库检查代码,如果有效,则将verified 字段标记为true

您可能想查看这个非常好的tutorial,了解如何在您的 Ionic 应用程序中处理身份验证。

如果您使用的是 Ionic 2,您可以查看这个综合性的 tutorial。 Auth0 也能很好地处理2-factor Authentication

我希望这会有所帮助!干杯!

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2014-12-23
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多