简单的角度身份验证
Simple Angular authentication
我正试图将本文中描述的小型身份验证应用程序变成一个工作示例,大致类似于这个ember版本。
将文章片段连接在一起,可以得出以下结论:
// app.js
app.config(function ($httpProvider) {
$httpProvider.interceptors.push(function ($timeout, $q, $injector) {
var loginModal, $http, $state;
// this trick must be done so that we don't receive
// `Uncaught Error: [$injector:cdep] Circular dependency found`
$timeout(function () {
loginModal = $injector.get('loginModal');
$http = $injector.get('$http');
$state = $injector.get('$state');
});
return {
responseError: function (rejection) {
if (rejection.status !== 401) {
return rejection;
}
var deferred = $q.defer();
loginModal()
.then(function () {
deferred.resolve( $http(rejection.config) );
})
.catch(function () {
$state.go('welcome');
deferred.reject(rejection);
});
return deferred.promise;
}
};
});
});
// LoginModalCtrl.js
app.controller('LoginModalCtrl', function ($scope, UsersApi) {
this.cancel = $scope.$dismiss;
this.submit = function (email, password) {
UsersApi.login(email, password).then(function (user) {
$scope.$close(user);
});
};
});
// loginModal.js
app.service('loginModal', function ($modal, $rootScope) {
function assignCurrentUser (user) {
$rootScope.currentUser = user;
return user;
}
return function() {
var instance = $modal.open({
templateUrl: 'views/loginModalTemplate.html',
controller: 'LoginModalCtrl',
controllerAs: 'LoginModalCtrl'
});
return instance.result.then(assignCurrentUser);
};
});
// routes.js
app.config(function ($stateProvider) {
$stateProvider
.state('welcome', {
url: '/welcome',
// ...
data: {
requireLogin: false
}
})
.state('app', {
abstract: true,
// ...
data: {
requireLogin: true // this property will apply to all children of 'app'
}
})
.state('app.dashboard', {
// child state of `app`
// requireLogin === true
});
});
然而,我不知道如何正确地实例化app
,也不知道在HTML中包含什么,或者如何为Angular识别它。
这是我从上面的代码开始的JSbin,我在其中添加了以下内容:
html
标签的ng-app="authApp"
属性- 包含原作者形式的
ng-controller="LoginModalCtrl"
div
- JS顶部的CCD_ 6
控制台在吐错误,我不明白。有人能告诉我如何将Angular应用程序变为现实吗?
tldr
你的第一行应该是
var app = angular.module("authApp", ['ui.router']);
您需要下载并包含UI路由器模块,其中包含以下内容:
<script src="app/js/angular-ui/angular-ui-router.min.js"></script>
更多详细信息:
JSbin上出现的第一个控制台错误:
Error: [$injector:unpr] Unknown provider: $stateProvider
建议您在angular不知道$stateProvider是什么的地方调用$stateProvider。$stateProvider来自angular UI Router模块。你需要在你的应用程序中包含该模块,才能直接调用它。
您需要下载UI路由器模块(https://github.com/angular-ui/ui-router),用类似的东西将其加载到html文件中
<script src="app/js/angular-ui/angular-ui-router.min.js"></script>
然后通过将第一行更改为来将模块包含在应用程序中
var app = angular.module("authApp", [
'ui.router',
]);
这将消除你的第一个错误。看起来在那之后你会有更多的错误,UsersApi并没有被定义为wickY26提到的。
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- 身份验证后获取Facebook图片
- 简单的角度身份验证
- 使用 feathersjs 通过简单的 rest 调用进行身份验证
- JavaScript 简单身份验证
- 余烬简单身份验证在会话中保存用户配置文件
- 将数据保存在 ember 简单身份验证中的浏览器本地存储中
- 余烬简单身份验证 - 如何更新存储的令牌
- Ember简单身份验证不持久刷新's
- 什么是通过AJAX对用户进行身份验证的最简单安全的方法
- 使用ember-cli简单身份验证令牌配置ember简单身份验证
- 简单的身份验证与谷歌自然语言API只使用客户端javascript
- 使用Angular服务的请求拦截器对REST get调用进行简单的身份验证
- 使用firebase创建简单身份验证的最佳方法是什么?
- 如何将简单的身份验证会话注入适配器