首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular.js身份验证重定向不能与Yeoman Angular-Fullstack一起使用

Angular.js身份验证重定向不能与Yeoman Angular-Fullstack一起使用
EN

Stack Overflow用户
提问于 2014-10-20 05:27:00
回答 1查看 667关注 0票数 0

我正在使用ngRouter,并且我对以下代码有问题:

代码语言:javascript
复制
# Add Video
.when '/videos/:action',
  templateUrl: 'app/videos/videos-edit/videos-form.html'
  controller: 'VideosEditCtrl'
  authenticate: true

# Edit video
.when '/videos/:action/:year/:month/:slug',
  templateUrl: 'app/videos/videos-edit/videos-form.html'
  controller: 'VideosEditCtrl'
  authenticate: true

如果我转到上面的编辑视频页面,但我没有登录,它会重定向到我想要的登录页面。但是,如果我对添加视频页面执行相同的操作,浏览器中的url将更改为登录页面,但它仍然显示添加视频的视图。

我可以从添加视频控制器中删除authenticate:true,它似乎仍然通过使用编辑视频身份验证来工作,但我不确定为什么或如何工作。

我想使用一个控制器来添加和编辑视频,因为代码非常相似。我的路由有什么问题吗?我应该拆分控制器吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-30 22:29:04

在app.js中添加'preventDefault()‘。

代码语言:javascript
复制
//before
.run(function ($rootScope, $location, Auth) {
// Redirect to login if route requires auth and you're not logged in
$rootScope.$on('$stateChangeStart', function (event, next) {
  Auth.isLoggedInAsync(function(loggedIn) {
    if (next.authenticate && !loggedIn) {
      $location.path('/login');
    }
  });
});

//after
.run(function ($rootScope, $location, $state, Auth) {
// Redirect to login if route requires auth and you're not logged in
$rootScope.$on('$stateChangeStart', function (event, next) {
  Auth.isLoggedInAsync(function(loggedIn) {
    if (next.authenticate && !loggedIn) {
        event.preventDefault();
        $location.path('/login');
    }
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26455598

复制
相关文章

相似问题

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