我有一个带侧边菜单的离子项目。 现在我想以简单的方式添加并登录酷形式,比如 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'
}
}
})
如何添加首先加载的身份验证(令牌)的登录页面以及如何以简单的方式添加登录页面的材料。
感谢!!!
答案 0 :(得分:9)
要实现登录,您需要这些东西
$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;
在您的DoLogin功能中,您需要处理命中您的API以进行登录,并接收您的令牌。您需要存储此令牌。我使用SQLlite插件将我的令牌存储到令牌表中。有不同的存储令牌的方式。
以及更多,我可以使用SQLlite为您提供代码段。
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;
不要只是从代码中复制粘贴(它不会工作),你需要构建逻辑,放置所有这些代码的位置和顺序。
收到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