【发布时间】:2014-06-02 01:28:48
【问题描述】:
在我的登录页面上:
<div ng-include="'partials/navbar'"></div>
<form name="form"
ng-submit="login(form)">
<div>
<input type="text"
placeholder="Email"
name="username"
ng-model="user.username"
required>
</div>
<div>
<input type="password"
placeholder="Password"
name="password"
ng-model="user.password"
required>
</div>
<button type="submit"> Submit </button>
</form>
提交后,login(form) 在此处执行(在登录控制器中):
var app = angular.module('groundup');
app.controller('LoginCtrl', function ($scope, $location, Auth) {
$scope.user = {};
$scope.login = function(form) {
Auth.login('my secret', {
'username': $scope.user.username,
'password': $scope.user.password
},
function(err) {
if(err)
console.log(err);
}
);
};
});
然后,对Auth.login 的调用执行以下代码:
'use strict';
angular.module('groundup')
.factory('Auth', function Auth($location, $rootScope, Session, User, $cookieStore) {
$rootScope.currentUser = $cookieStore.get('user') || null;
$cookieStore.remove('user');
$rootScope.currentUserSignedIn;
return {
login: function(provider, user, callback) {
var cb = callback || angular.noop;
//console.log(user);
Session.save({
provider: provider,
username: user.username,
password: user.password,
rememberMe: user.rememberMe
}, function(user) {
console.log(user);
$rootScope.currentUser = user;
$rootScope.currentUserSignedIn = true;
return cb();
}, function(err) {
console.log(err);
return cb(err.data);
});
},
上面的代码是引发错误的地方——生成的 POST 请求有问题——并引发错误:
code: "ER_BAD_FIELD_ERROR", errno: 1054, sqlState: "42S22", index: 0
我假设它与我的 Session.save 方法有关 - 它对 /auth/session 进行 POST 调用(最终调用为 BAD REQUEST)。这是我的快速路线以防万一,但我认为该错误与我尝试存储信息的变量名称有关,然后传递给护照登录策略:
app.post('/auth/session', session.login);
在另一个文件中(参考session.login):
/**
* Login
* requires: {email, password}
*/
exports.login = function (req, res, next) {
passport.authenticate('local-login', function(err, user, info) {
console.log(user);
var error = err || info;
if (error) { return res.json(400, error); }
req.logIn(user, function(err) {
if (err) { return res.send(err); }
res.json(req.user.user_info);
});
//console.log(req.user);
})(req, res, next);
}
这就是整个流程 - 如果有人可以提供帮助,我将不胜感激。它将信息存储为会话 - 所以我认为它与数据库中 MySQL 字段的名称没有太大关系,因为我没有将会话存储在数据库中(如果我错了,请纠正我) .我还有两个问题 - user.rememberMe 和 provider: provider 是干什么用的?谢谢!我尝试将那些从会话中保存的对象中取出,但没有帮助 - 但我仍然不确定它们的用途。
【问题讨论】:
标签: javascript html mysql angularjs session