我认为我错过了一些内容,但是我在使用发送给用户的链接实现用户激活过程时遇到了问题'电子邮件。
我有注册页面。填写表单请求发送到后端,其中一些逻辑已完成,并且邮件也被发送到用户的邮箱。在这封邮件中有激活链接。 在这里我的问题开始了 - 我希望用户点击该链接并移动到我的页面,但我想将此令牌直接传递给后端以检查其有效性,激活帐户,最后将用户重定向到登录页面。
如何正确实现?
这是我目前针对AngularJS app的路由配置:
$routeProvider.when('/', {
templateUrl: 'views/main.html',
controller: 'appController'
}).when('/login', {
templateUrl: 'views/login.html',
controller: 'userController'
}).when('/signup', {
templateUrl: 'views/signup.html',
controller: 'userController'
}).when('/activate/:activationToken', {
templateUrl: 'views/activate.html',
controller: 'userController'
}).otherwise({
redirectTo: '/'
});
这是我目前对node.js的后端路由配置:
router.post('/users/login', userHelper.shouldNotBeLoggedIn, authentication.login);
router.post('/users/signup', userHelper.shouldNotBeLoggedIn, authentication.signup);
router.get('/users/logout', userHelper.shouldBeLoggedIn, authentication.logout);
router.get('/users/activate/:token', userHelper.shouldNotBeLoggedIn, authentication.activate);
以下是我如何将数据从后端返回到前端:
if (err) {
logger.error(util.inspect(err));
res.status(403).json({message: err.code});
} else {
res.status(200).json({message: 'accountActivated'});
}
答案 0 :(得分:0)
一种方法是使用纯后端URL +视图,如果令牌正确,则处理帐户激活,然后302重定向到Angular应用程序所在的常规URL。如果令牌不正确,请重定向到显示错误消息的URL。
更新
在userController中,当URL与激活电子邮件中发送的URL匹配时(这可能已存在于/activate/:activationToken
),将令牌发送到您的后端,如下所示:
// Make sure to inject $http and $routeParams in your controller.
$http.post('/users/activate/' + $routeParams.activationToken, {}).success(function(response) {
console.log('Yay');
}).error(function(response) {
console.error(response.data.message)
});