- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用最新的 Angular + Firebase 并尝试设置登录授权系统。我有包含登录+注册链接的 home.html,转到 login.html 并添加凭据工作正常(提交时记录正确的 UID)但它应该路由到 dash.html 但返回到 home.html。
我发现这似乎是我的解析函数的问题,因为当我删除 .otherwise 时问题就消失了。但我认为我仍然想要(需要?)它。
如果我已登录(但重定向到 home.html),我仍然可以通过 URL 访问 dash.html,如果我在 dash.html 使用注销功能,我将无法再次访问它,这应该是这样的。但我不明白为什么我首先被重定向到 home.html。
这里是一些代码,任何帮助表示赞赏:
我的 .run、.config 和路由。
app.run(['$rootScope', '$location',
function($rootScope, $location){
$rootScope.$on('$routeChangeError',
function(event, next, previous, error){
if(error === 'AUTH_REQUIRED'){
$location.path('/home');
}
});
}]);
app.config(['$routeProvider', '$locationProvider', function($routeProvider,
$locationProvider){
$routeProvider
.when('/home', {
templateUrl: '/home.html',
controller: 'homeController'
})
.when('/login', {
templateUrl: '/login.html',
controller: 'loginController',
resolve: {
'currentAuth': ['Auth', function(Auth){
return Auth.$waitForAuth();
}]
}
})
.when('/dash', {
templateUrl: '/dash.html',
controller: 'dashController',
resolve: {
'currentAuth': ['Auth', function(Auth){
return Auth.$requireAuth();
}]
}
})
.otherwise({ redirectTo: '/home' });
}]);
我的登录 Controller :
app.controller('loginController', ['currentAuth', '$scope', '$firebaseAuth',
'Auth', '$location', '$rootScope',
function(currentAuth, $scope, $firebaseAuth, Auth, $location, $rootScope){
var ref = new Firebase('https://url.firebaseio.com');
$scope.auth = $firebaseAuth(ref);
$scope.loginUser = function(){
$scope.auth = Auth;
$scope.auth.$authWithPassword({
email:$scope.email,
password:$scope.password
}, {
remember: 'sessionOnly'
}).then(function(authData) {
console.log('Logged in as: ', authData.uid);
$scope.auth.$onAuth(function(authData) {
$rootScope.auth = true;
$scope.auth = Auth;
$location.path('/dash.html');
})
}).catch(function(error) {
console.log('There was an error: ', error);
});
};
}]);
还有我的工厂和模块: var app = angular.module('app', ['firebase', 'ngRoute']);
app.factory('Auth', ['$firebaseAuth',
function($firebaseAuth){
var ref = new Firebase('https://url.firebaseio.com');
return $firebaseAuth(ref);
}]);
最佳答案
它与您的解决问题有关。
如果您查看文档 firebase doc你会看到他们使用
$waitForSignIn
或
$requireSignIn
函数。我知道,因为我也做过同样的事情。试试看,它应该可以工作
关于javascript - Angularfire ngRoute/解决问题,跳转到否则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36105423/
当我们写 angular.module('app',['ngRoute']); 这里的依赖到底是什么意思? 最佳答案 准确地说,ngRoute 只不过是一个简单的 Angular 模块,如 angul
我有一个非常奇怪的错误,我已经设置了路线和 Controller 。现在我只有一个没有错误的空白页面? index.html; Rekentalent.nl: Ben j
如果我尝试使用 ngRoute 方法更改主页面 View ,我有一个网络应用程序似乎根本无法工作。路由配置如下所示: var app; app = angular.module('genehaxx',
我想让这个简单的路由工作,但无法弄清楚问题出在哪里。 这是 HTML: . . .
我尝试通过导航栏使用 ngRoute 导航到其他 HTML 页面,但是当我单击导航栏上的不同按钮时,页面上没有显示任何内容。 Index.html 文件: table, th , td {
我正在创建一个 Angular 应用程序。文件结构如下: index.html login.html js/index.js index.html内容为
为什么我有这个错误?这是我的错误: “无法实例化模块 ngRoute” 详细信息: “ Uncaught Error :[$injector:modulerr] http://errors.angul
我的自定义指令中的隔离范围有问题。 我已经构建了一个自定义指令。当我没有使用父作用域在指令中设置作用域属性时,它起作用了。 它做了什么?它呈现了一个原生的 JavaScript 控件。每次加载站点时,
我在函数中传递 /?preview=true 并在 app.js $route.current.params.preview 中捕获。但是当我在控制台日志中输出 $route.current.para
我的代码遇到问题。 刷新 localhost:portnumber/home 或/todos 或/contacts 上的页面时崩溃 -> 使用重播无法获取/home 或/todos 或/contact
我的应用程序在几个小时前运行良好。现在,当我进入一个页面、触发一个事件时,应用程序会返回到主菜单。 我是这样使用 ngRoute 的: app.js angular.module('starter',
我是 Angular 新手,很难让 ngRoute 获取我的模板文件。 这是我的index.html:
我创建了一个网络应用程序,运行完美。现在我需要使用稍微不同的 Controller 创建几乎完全相同的 html 页面。我正在尝试使用 ngRoute 但它不起作用,我也不是 100% 相信我的路线会
我的 ng-route 与我在网页上实现的动画滚动冲突: 这是我的滚动元素: Next 其中“#one”是部分ID,其中滚动到goto-next是图像类,scrolly用于平滑滚动动画。 这是我的 n
我正在开发一个新的 Angularjs 网络应用程序,我必须在其中使用 ngRoute。首先我有点困惑,因为在我的情况下路由根本不起作用 - 我总是在 index 结束。和 MainCtrl。 在 i
我有四个文件: angularjs.js scripts.js ngroute.js index.html 现在,我配置了以下路由: var myApp = angular.module("myApp
我的应用程序可以与 ngRoute 配合使用,但是当我尝试直接访问我的部分(从地址栏)时,它仅返回该部分(没有主页)。如何隐藏这些部分以防止直接访问? 说明:我有一个有 2 个街区的站点。第一个是菜单
我有一个索引页面(登录),其中存在注册链接,因此在重定向时我尝试加载 Controller ,但它没有加载,控制台中也没有错误。 我的主页正在加载 URL:http://localhost:8081/
好吧,我是 Angular 的新手,为了测试我在 Codecademy 上获得的技能,我正在做一个音乐艺术家的测试网站。第一页是艺术家列表。当您单击其中一位艺术家的 block 时,它会在同一页面上加
是否可以向 AngularJS 应用程序中的所有路由添加基本 URL?本质上是改变它在服务器上的位置(有点,如果这有意义的话......所以它不会通过 / 而是通过 /something/ 访问)。
我是一名优秀的程序员,十分优秀!