Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用yeoman generator angular搭建的angular种子进行用户身份验证的正确方法 情况_Javascript_Angularjs_Authentication - Fatal编程技术网

Javascript 使用yeoman generator angular搭建的angular种子进行用户身份验证的正确方法 情况

Javascript 使用yeoman generator angular搭建的angular种子进行用户身份验证的正确方法 情况,javascript,angularjs,authentication,Javascript,Angularjs,Authentication,我使用yeoman生成器angularjs构建了应用程序,从而为我提供了一个干净的目录结构和框架结构。我只是在学习angularjs,使用yeoman是一种更干净的方式,soc已经基本实现 现在我遇到了一个问题,比如服务和工厂,我现在正在处理用户身份验证 大体上 目前我有两条路线,一条是/,另一条是/secured。我设置它是为了真正开始使用身份验证 我发现这篇文章是关于。我发现它真的很有趣,我想我可以理解它,我真的理解它,但我想我没有理解工厂和服务应该如何使用的一些基本知识 我现在拥有的 首先

我使用yeoman生成器angularjs构建了应用程序,从而为我提供了一个干净的目录结构和框架结构。我只是在学习angularjs,使用yeoman是一种更干净的方式,soc已经基本实现

现在我遇到了一个问题,比如服务和工厂,我现在正在处理用户身份验证

大体上 目前我有两条路线,一条是
/
,另一条是
/secured
。我设置它是为了真正开始使用身份验证

我发现这篇文章是关于。我发现它真的很有趣,我想我可以理解它,我真的理解它,但我想我没有理解工厂和服务应该如何使用的一些基本知识

我现在拥有的 首先,我没有后端服务,因为应用程序马上就会失败,现在不需要编写服务,我只需要编写一个简单的php脚本,返回
401
状态或
200
,但现在不需要,我想先在客户端工作

在我的
app.coffee
文件中

angular.module('myApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute'
])
.config ($routeProvider) ->
  $routeProvider
    .when '/',
      templateUrl: 'views/home.html'
      controller: 'HomeCtrl'
    .when '/secured',
      templateUrl: 'views/secured.html'
      controller: 'SecuredCtrl'
      resolve:
        loggedin: checkLoggedin // this is the wrong one
    .otherwise
      redirectTo: '/'
.config ($httpProvider) ->
  $httpProvider.interceptors.push('httpInterceptor')
在文章中,它说创建一个检查用户是否登录的函数,在他的文章中,他在
config
方法中创建了该函数。顺便说一句,他没有使用约曼,所以对我来说,事情很复杂

我认为检查loggedin状态是工厂或服务的工作,所以我想写一个这样的因素

angular.module('myApp')
  .factory 'checkLoggedin', ($q, $timeout, $http, $location, $rootScope) ->
    deferred = $q.defer()

    $http.get('api/loggedin').success (user) ->
      if user isnt '0'
        $timeout(deferred.resolve, 0)
      else
        $rootScope.message = 'You need to be logged in.'
        $timeout(
          () -> deferred.reject(),
          0
        )
        $location.url '/login'

正确的方法是什么?

您可以使用http身份验证模块-

您只需在应用程序控制器级别侦听事件“auth login Required”,然后显示登录屏幕

我所做的(不是最好的方法)是在我的应用程序控制器中侦听此事件并重定向到登录路径-

$scope.$on('event:auth-loginRequired', function() {
    $location.path('/login');
});

这并不能回答这个问题,但我会试着看一看