AngularJS $资源请求密码重置的自定义操作

时间:2015-06-16 07:28:03

标签: angularjs rest ngresource

我刚开始在项目中使用ngResource来使用我的RESTful端点。这是使用$ resource实现用户密码重置的方法吗?看起来很奇怪,将电子邮件地址作为URL参数传递。

.factory('User', ['$resource', function ($resource) {

    var paramDefaults = {id: '@id'}

    var actions = {
        passwordReset: {
            method: 'GET',
            params: {email: '@email'},
            url: '/api/user/reset/:email'
        }
    }

    return $resource('/api/user/:id', paramDefaults, actions);
}])

2 个答案:

答案 0 :(得分:1)

是的,看起来有点奇怪。我将使用POST请求来重置密码并在请求正文中传递电子邮件参数

,而不是GET

答案 1 :(得分:1)

只要你确保通过HTTPS调用服务(即加密连接),就没有什么可以反对imho(当然,REST纯粹主义者可能会在这里争论)。

就安全性而言,GET请求(将数据作为请求参数传递)和POST请求(在请求正文中传递数据)的行为是相同的:如果未加密,攻击者可以窃听数据排队数据。除此之外,接受GET请求可能 - 取决于服务器端REST框架 - 比POST请求稍重一些。

由于密码本身不作为请求的一部分传递,因此可能认为不需要加密。但是,仍然强烈建议对请求进行加密,因为单独重置密码的人可能会允许攻击,并且通常会在响应中返回允许重置密码的令牌。