gpt4 book ai didi

rest - 使用 Angular 前端和 Drupal 7 后端处理 CSRF/XSRF token

转载 作者:行者123 更新时间:2023-12-04 22:59:16 25 4
gpt4 key购买 nike

我正在为 Drupal 7 网站构建新的 AngularJS 前端。这是使用带有基于 session 的身份验证的服务模块,跨两个使用 CORS 的域。我能够使用 Drupal 进行身份验证,检索用户对象和 session 数据,然后从服务模块获取 CSRF token 。我遇到的问题是在 header 中设置所有这些,以便对后续请求进行身份验证。我了解整体概念,但对 AngularJS 和防止 CSRF 攻击都是新手。

根据我收集到的关于 AngularJS 和 RubyOnRails 设置的信息,平台之间在 token 命名和处理方式方面可能存在不一致。似乎还有一些关于如何在标题中设置此标记的建议。但是,我很难找到一个可靠的例子来说明如何让这些平台说同一种语言。

我在 app.js 中对 $httpProvider 所做的唯一事情是:

delete $httpProvider.defaults.headers.common['X-Requested-With'];

登录 Controller ,在 controller.js 中:
  .controller('LoginCtrl', ['$scope', '$http', '$cookies', 'SessionService', function($scope, $http, $cookies, SessionService) {
$scope.login = function(user) {
//set login url and variables
var url = 'http://mywebsite.com/service/default/user/login.json';
var postDataString = 'name=' + encodeURIComponent(user.username) + '&pass=' + encodeURIComponent(user.password);

$http({
method: 'POST',
url: url,
data : postDataString,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data, status, headers, config) {
var sessId = data.sessid;
var sessName = data.session_name;
$cookies[sessName] = sessId;

var xsrfUrl = 'http://mywebsite.com/services/session/token';
$http({
method: 'GET',
url: xsrfUrl
}).success(function (data, status, headers, config) {
$cookies["XSRF-TOKEN"] = data;
SessionService.setUserAuthenticated(true);
}).error(function (data, status, headers, config) {
console.log('error loading xsrf/csrf');
});
}).error(function (data, status, headers, config) {
if(data) {
console.log(data);
var msgText = data.join("\n");
alert(msgText);
} else {
alert('Unable to login');
}
});
};

最佳答案

解决方案与如何设置 cookie 以及如何通过后续请求有关。尝试手动设置它们并不顺利,但解决方案比我预期的要简单。每个 $http 调用都需要设置选项:

withCredentials: true

我所做的另一个更改是使用术语 CSRF 而不是 XSRF,以与 Drupal 保持一致。我没有使用任何内置的 AngularJS CSRF 功能。

关于rest - 使用 Angular 前端和 Drupal 7 后端处理 CSRF/XSRF token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com