使用离子和材料设计登录

时间:2015-04-18 16:28:18

标签: user-interface ionic-framework ionic-material

我有一个带侧边菜单的离子项目。 现在我想以简单的方式添加并登录酷形式,比如 http://ionicmaterial.com/ 但问题是我没有看到任何示例如何在激动人心的项目中添加它,它将首先加载登录表单,之后将重定向到常规页面。 我的项目看起来像:

app.config(function ($stateProvider, $urlRouterProvider) {
    $stateProvider

        .state('app', {
            url: "/app",
            abstract: true,
            templateUrl: "templates/menu.html",
            controller: 'AppCtrl'
        })
        .state('app.placeslists', {
            url: "/placeslists",
            views: {
                'menuContent': {
                    templateUrl: "templates/placeslists.html",
                    controller: 'PlaceslistsCtrl'
                }
            }
        })

如何添加首先加载的身份验证(令牌)的登录页面以及如何以简单的方式添加登录页面的材料。

感谢!!!

3 个答案:

答案 0 :(得分:9)

要实现登录,您需要这些东西

  1. 登录状态
  2. 登录模板
  3. 处理您的令牌的逻辑
  4. 
    
     $stateProvider
                .state('Login', {
                    url: "/Login",
                    templateUrl: "app/templates/Login.html"
                })
    
    <ion-view view-title="Login" align-title="left">
        <ion-content style="background: url(img/login.jpg) center; background-size: cover;">
            <div class="hero no-header flat">
                <div class="content">
                    <div class="app-icon"></div>
                    <h1>Thronester</h1>
                </div>
            </div>
            <div class="list">
                <ion-md-input placeholder="Username" highlight-color="balanced" type="text" ng-model='user.username'></ion-md-input>
                <ion-md-input placeholder="Password" highlight-color="energized" type="password" ng-model='user.password'></ion-md-input>
            </div>
            <div class="padding">
                <button ui-sref="app.profile" class="button button-full button-assertive ink">Login</button>
            </div>
            <div class="button-bar social-login">
                <button class="button button-small button-border icon-left ion-social-google button-assertive-900" ng-click='DoLogin(user)'>Login</button>
                
            </div>
        </ion-content>
    </ion-view>
    &#13;
    &#13;
    &#13;

    在您的DoLogin功能中,您需要处理命中您的API以进行登录,并接收您的令牌。您需要存储此令牌。我使用SQLlite插件将我的令牌存储到令牌表中。有不同的存储令牌的方式。

    1. SQLite plugin
    2. Local Storage
    3. WebSQL
    4. File ngCordova
    5. 以及更多,我可以使用SQLlite为您提供代码段。

      &#13;
      &#13;
      var DB = window.sqlitePlugin.openDatabase({name: "Token.db", location: 1})
      
      var CreateQuery = 'CREATE TABLE IF NOT EXISTS Token (id integer primary key, access_token TEXT)'
      
      var InsertQuery = 'INSERT INTO Token (access_token) VALUES (?)'
      var selectQuery = 'SELECT access_token FROM Token WHERE id = 1'
      
      
      var Token = // the token you get from your server, make a $http resquest and get it
      
          
          
      $cordovaSQLite.execute( DB,CreateQuery ).then(function () {
           //table created  
      })
      
      
      $cordovaSQLite.execute(DB, InsertQuery, [Token]).then(function(){
       // token inserted into table
      })
      
      
      $cordovaSQLite.execute(DB, selectQuery).then(function (res) {
            //getting token from table
            $rootScope.TokenFromTable =  res.rows.item(0).access_token;
        })
                       
      &#13;
      &#13;
      &#13;

      不要只是从代码中复制粘贴(它不会工作),你需要构建逻辑,放置所有这些代码的位置和顺序。

      收到authToken后,您可以将其设置为所有$ http请求的公共标头,当用户单击注销时,只需删除表或删除数据库即可。 (浏览链接中的博客)

答案 1 :(得分:1)

你可以在app.js中添加新的状态登录,它将加载login.html和控制器并通过defalut加载它:

.state('login',{         url:'/ login',         templateUrl:'templates / login.html',         控制器:'LoginCtrl'     })

//如果上述任何一种状态都不匹配,请使用此作为后备   $ urlRouterProvider.otherwise( '/登录');

并在登录控制器中成功登录后,您可以使用$ state.go('app.placeslists')将其重定向到任何页面;它将加载常规页面。

答案 2 :(得分:1)

我在最后发现了演示的所有信息 你也可以在: https://github.com/zachsoft/Ionic-Material