在我的登录页面上:
<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)
在此处执行(在登录 Controller 中):
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 调用(post 调用最终是错误请求)。这是我的快速路线,以防有帮助,但我认为该错误与我试图存储信息的变量名称有关,然后传递给护照登录策略:
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);
}
这就是整个流程 - 如果有人可以提供帮助,我将不胜感激。它将信息存储为 session - 所以我认为它与数据库中 MySQL 字段的名称没有太大关系,因为我没有将 session 存储在数据库中(如果我错了,请纠正我) 。我还有两个问题 - user.rememberMe
和 provider:provider
的用途是什么?谢谢!我尝试将它们从 session 中保存的对象中取出,但没有帮助 - 但我仍然不确定它们的用途。
最佳答案
当我检查用户登录时是否存在时,这与错误的字段名称有关。错误在于我本地的护照策略。只是另一个愚蠢的:)。
关于javascript - 代码 : "ER_BAD_FIELD_ERROR", errno : 1054, sqlState : "42S22", 索引:0 MySQL/Angular/Sessions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23982281/