Firebase身份验证与角度:用户登录
firebaseAuth with Angular: User Login
我正在使用Angular(1.3.5)和Firebase编写玩具博客程序,目前正在为用户登录部分而苦苦挣扎。
我首先创建了一个 Angular 模块:
var blogApp = angular.module('blogApp', ['ngRoute', 'firebase', 'RegistrationController']);
然后在blogApp之上,我创建了一个名为**注册控制器**的控制器:
blogApp.controller('RegistrationController', function ($scope, $firebaseAuth, $location) {
var ref = new Firebase('https://myAppName.firebaseio.com');
// var authLogin = $firebaseAuth(ref);
$scope.login = function(){
ref.authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(err, authData) {
if (err) {
$scope.message = 'login error';
} else {
$scope.message = 'login sucessful!';
}
});
}; // login
}); //RegistrationController
我将login()
方法附加到 ng-submit 在我的用户登录表单中,范围为 RegistratinController
.
当我单击以提交登录表单时,表单不会做出任何响应,也不会显示任何错误。
登录表单仅在我单击"提交"按钮两次时才有效 - 为什么会这样? 令人困惑
您使用的是 Firebase JavaScript 库,而不是 AngularFire 作为登录方法。
您需要将 Firebase 引用传递到$firebaseAuth
绑定中。
var auth = $firebaseAuth(ref);
从那里你可以打电话给auth.$authWithPassword
.
$scope.login = function(){
auth.$authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(err, authData) {
if (err) {
$scope.message = 'login error';
} else {
$scope.message = 'login successful!';
}
});
}; // login
AngularFire 是 Firebase Library 的 Angular 绑定,用于处理对象和数组的自动同步。AngularFire还处理何时调用$scope.apply
以正确更新视图。
在您的情况下,登录代码在第一次点击时有效,但它不会应用于页面。您可以将此代码包装在 $timeout
中,但最好使用 $firebaseAuth
服务。
感谢用户jacobawenger,感谢他在这里发布的解决方案:
无法在AngularFire 0.9.0中获取新的密码身份验证方法?
这按预期工作:
myApp.controller('RegistrationController',
function($scope, $firebaseAuth, $location) {
var ref = new Firebase('https://myApp.firebaseio.com');
var simpleLogin = $firebaseAuth(ref);
$scope.login = function() {
simpleLogin.$authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}).then(function() {
$location.path('/mypage');
}, function(err) {
$scope.message = err.toString();
});
} // login
}); // RegistrationController
相关文章:
- 使用jQuery File Upload实现所需的用户登录
- 用户登录时的流星事件
- 如何在 Angular 中将锚标记与模态链接,以便用户登录
- 如何让登录按钮在用户登录时更改为图标
- 在单个登录页面中使用多个用户登录的 JSON 登录
- 用户登录时重新加载
- 如果用户登录不起作用,则运行脚本
- Meteor用户登录
- 一旦用户登录JSF页面,就禁用浏览器返回按钮
- 每次用户登录javascript时转换totaltime
- 正在从facebook检索用户登录名-无需登录
- 脸书:查询公共活动,无需用户登录
- 如何在用户登录后从布局页面中删除登录按钮
- 如果用户登录了Backbone,JavaScript,如何显示/隐藏表单
- 通过 JS 和 ajax 验证用户登录
- 用户登录后,将立即提交用户表单
- 保持用户登录,在反应通量应用程序中
- 条件翡翠模板,用户登录
- 护照.js用户登录和身份验证
- 用户登录后如何调用 socket.io 授权