AngularJS将请求直接传递给后端

时间:2014-09-21 10:34:31

标签: angularjs

我认为我错过了一些内容,但是我在使用发送给用户的链接实现用户激活过程时遇到了问题'电子邮件。

我有注册页面。填写表单请求发送到后端,其中一些逻辑已完成,并且邮件也被发送到用户的邮箱。在这封邮件中有激活链接。 在这里我的问题开始了 - 我希望用户点击该链接并移动到我的页面,但我想将此令牌直接传递给后端以检查其有效性,激活帐户,最后将用户重定向到登录页面。

如何正确实现?

这是我目前针对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'});
}

1 个答案:

答案 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)
});
相关问题