如何在离子应用程序内正确实现单点登录

时间:2016-03-30 09:17:27

标签: javascript angularjs cordova ionic-framework

我正在尝试在离子应用程序内部实现单点登录;这样当用户第一次登录时,除非他退出,他应该可以直接访问应用程序,而无需多次登录。

该实现仅适用于用户被定向到应用页面之前,他看到,简短的启动屏幕,然后是简短的登录页面,最后是我希望他在应用午餐时看到的正确页面。

我有一个名为... your html code ... <script> var elem = document.getElementById('new-created-element'); elem.addEventListener("click", function(){ var subDivId = getSubDivByParent(this); Show_Hide_Display(subDivId); };) </script> 的服务,可以在首次登录时将用户数据保存到本地存储。

然后我检查了UserService中是否存在数据,如果是,则将用户带到应用页面,否则按照正常的登录过程进行。这是在UserService内部运行中完成的,如此

app.js

任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

这可以通过代码处理启动画面来实现。

添加启动画面插件

cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git

在config.xml中禁用AutoHideSplashScreen属性

<preference name="AutoHideSplashScreen" value="false" />

然后修改游览代码,如下所示

.run(function($ionicPlatform, $rootScope, $ionicHistory, $state, UserService,localStorage, $timeout) 
{
    $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)

        if(window.cordova && window.cordova.plugins.Keyboard) 
        {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }

        if(window.StatusBar) 
        {
            StatusBar.styleDefault();
        }

        // implement single sign on here
        user = UserService.getUser().loggedInUserId;
        if(user !==undefined  )
        {
            console.log("user exists")
            $state.go('app.apppage');
        }
        else 
        {
            console.log("user does not exist")
        }

        //====================
        //  hide splash screen
        //====================

        $timeout(function() {
          // clear history to prevent the user from navigating back to login page
          $ionicHistory.clearHistory();
          navigator.splashscreen.hide();
        }, 1000);

        //=======================

    })
}

希望它有所帮助。