首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用yeoman生成器angular搭建的angular-seed脚手架进行用户认证的正确方法

使用yeoman生成器angular搭建的angular-seed脚手架进行用户认证的正确方法
EN

Stack Overflow用户
提问于 2014-02-24 15:13:46
回答 1查看 766关注 0票数 0

情况

我使用yeoman生成器angularjs搭建了应用程序,从而为我提供了一个干净的目录结构和框架结构。我只是在学习angularjs,使用yeoman是一种更干净的做事方式,soc已经取得了很大的成就。

现在我遇到了一个问题,不知道该把东西放在哪里,比如服务和工厂,我现在正在处理用户身份验证。

基本上

到目前为止,我有两个路由,一个是/,一个是/secured。我对此进行了设置,以便可以真正开始使用身份验证。

我找到了这篇关于authenticating a user的文章。我发现它真的很有趣,我认为我可以以某种方式理解它,我真的理解了它,但我认为我无法理解应该如何使用工厂和服务的一些基础知识。

我目前所拥有的

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

app.coffee文件中

代码语言:javascript
复制
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')

在文章中,他说创建一个检查用户是否登录的函数,在他的codebase中,他在config方法中创建了这个函数。顺便说一句,他没有使用约曼,所以对我来说事情变得很复杂。

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

代码语言:javascript
复制
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'

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-02-24 15:24:51

您可以使用非常棒的angular-http-auth模块- https://github.com/witoldsz/angular-http-auth

您所需要做的就是在应用程序控制器级别侦听事件“auth-loginRequired”,然后显示登录屏幕。

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

代码语言:javascript
复制
$scope.$on('event:auth-loginRequired', function() {
    $location.path('/login');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21981165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档