注册后自动登录
After register automatically log in
创建帐户后,用户应登录并重定向到主页。但不知何故它不起作用。
因为它确实转到了主页,但用户仍未登录。但是它确实转到了 passport.use() 函数。 (我已经在控制台上记录了这个)。这证明了这一点:
POST /api/myTheme/register 200 362 - 54.324 ms
POST /api/login 200 362 - 46.108 ms
下面你可以看到我的代码:
myApp.factory('MyTheme', function($http, $location) {
return {
register: function(user) {
return $http.post('/api/myTheme/register', {
email: user.email,
password: user.password,
confirmPassword: user.confirmPassword,
username: user.username,
name: user.name
}).then(function successCallback(response) {
$http.post('/api/login', {
email: user.email,
password: user.password
});
$location.path( "/" );
}, function errorCallback(response) {
});
}
};
});
可能的解决方案
我更改路径时 post 可能尚未完成。所以可能的解决方案是使用另一个 .then() 函数。在函数体内我只会有这行代码:
$location.path( "/" );
但是我真的不知道怎么放置.then()函数。
当您注意到在 post 完成之前更改路径时,我认为您走在了正确的轨道上。你只需要在你的 post 到 /api/login 的末尾附加一个 .then()
就像你对 post 到 /api/mytheme/register
所做的那样
像这样
myApp.factory('MyTheme', function($http, $location) {
return {
register: function(user) {
return $http.post('/api/myTheme/register', {
email: user.email,
password: user.password,
confirmPassword: user.confirmPassword,
username: user.username,
name: user.name
}).then(function successCallback(response) {
$http.post('/api/login', {
email: user.email,
password: user.password
}).then(function(response){ /***********change here***********/
$location.path( "/" );
});
}, function errorCallback(response) {
});
}
};
});
只需链接 Promise
s:
return {
register: function(user) {
return $http.post('/api/myTheme/register', { ... })
.then(function successCallback(response) {
return $http.post('/api/login', { ... }
)
.then(function successfulLogin(response) {
$location.path( "/" );
})
.catch(function errorCallback(response) { ... });
}
};
请注意,您可以将 promise 链接到一个级别,这使您的代码更具可读性,并允许您使用 catch
来处理任何这些 promise 引发的任何错误。
创建帐户后,用户应登录并重定向到主页。但不知何故它不起作用。
因为它确实转到了主页,但用户仍未登录。但是它确实转到了 passport.use() 函数。 (我已经在控制台上记录了这个)。这证明了这一点:
POST /api/myTheme/register 200 362 - 54.324 ms
POST /api/login 200 362 - 46.108 ms
下面你可以看到我的代码:
myApp.factory('MyTheme', function($http, $location) {
return {
register: function(user) {
return $http.post('/api/myTheme/register', {
email: user.email,
password: user.password,
confirmPassword: user.confirmPassword,
username: user.username,
name: user.name
}).then(function successCallback(response) {
$http.post('/api/login', {
email: user.email,
password: user.password
});
$location.path( "/" );
}, function errorCallback(response) {
});
}
};
});
可能的解决方案
我更改路径时 post 可能尚未完成。所以可能的解决方案是使用另一个 .then() 函数。在函数体内我只会有这行代码:
$location.path( "/" );
但是我真的不知道怎么放置.then()函数。
当您注意到在 post 完成之前更改路径时,我认为您走在了正确的轨道上。你只需要在你的 post 到 /api/login 的末尾附加一个 .then()
就像你对 post 到 /api/mytheme/register
像这样
myApp.factory('MyTheme', function($http, $location) {
return {
register: function(user) {
return $http.post('/api/myTheme/register', {
email: user.email,
password: user.password,
confirmPassword: user.confirmPassword,
username: user.username,
name: user.name
}).then(function successCallback(response) {
$http.post('/api/login', {
email: user.email,
password: user.password
}).then(function(response){ /***********change here***********/
$location.path( "/" );
});
}, function errorCallback(response) {
});
}
};
});
只需链接 Promise
s:
return {
register: function(user) {
return $http.post('/api/myTheme/register', { ... })
.then(function successCallback(response) {
return $http.post('/api/login', { ... }
)
.then(function successfulLogin(response) {
$location.path( "/" );
})
.catch(function errorCallback(response) { ... });
}
};
请注意,您可以将 promise 链接到一个级别,这使您的代码更具可读性,并允许您使用 catch
来处理任何这些 promise 引发的任何错误。