gpt4 book ai didi

angularjs - Angular 中的 CSRF token 与 Laravel 5 不同

转载 作者:行者123 更新时间:2023-12-02 23:54:08 25 4
gpt4 key购买 nike

我有一个分为后端和前端的项目,后端(API REST)是在 Laravel 5 中构建的,前端是在 AngularJS 中构建的。这两个项目都是独立的,并且应该托管在不同的服务器上。

在第一个请求中,我使用以下代码从 Laravel 获取 CSRF token :

var xhReq = new XMLHttpRequest();
xhReq.open("GET", "http://laravel.local/api/token", false);
xhReq.send(null);
angular.module('mytodoApp').constant('CSRF_TOKEN',xhReq.responseText);

因此,每次我向 API 发出请求时都会发送 CSRF_TOKEN,如下所示:

    $scope.deleteTodo = function(index) {
$scope.loading = true;
var todo = $scope.tours[index];
$http.defaults.headers.common['XSRF-TOKEN'] = CSRF_TOKEN;
console.log($http.defaults.headers.common['XSRF-TOKEN']);
$http.delete('http://laravel.local/api/deleteTodo/' + todo.id, {headers : {'XSRF-TOKEN': CSRF_TOKEN}})
.success(function() {
$scope.todos.splice(index, 1);
$scope.loading = false;

});

API 始终返回:

TokenMismatchException in compiled.php line 2440:

Laravel 是否会根据 Angular 的每个请求更改 CSRF token ?对于每个请求,Laravel 都会在存储/框架/ session 上创建一个新文件。您是否推荐任何其他解决方案来验证对 API 的请求是否来自安全来源?

最佳答案

在基于 token 的身份验证中,不会使用 cookie 和 session 。 token 将用于对向服务器发出的每个请求进行用户身份验证。它将使用以下控制流程:

  1. 用户在登录表单中提供用户名和密码,然后单击“登录”。
  2. 发出请求后,通过在数据库中查询来验证后端的用户。如果请求有效,则使用从数据库获取的用户信息创建 token ,然后在响应 header 中返回该信息,以便我们可以将 token 浏览器存储在本地存储中。
  3. 在每个请求 header 中提供 token 信息,以访问应用程序中的受限端点。

4.请求头信息有效,让用户访问指定端点,并以JSON或XML响应。

这可以通过 Jwt (Json web Token) 来实现。从 This 获取此信息链接。

那么,这个 JWT 是什么?

智威汤逊

JWT 代表 JSON Web Token,是授权 header 中使用的 token 格式。该 token 可帮助您以安全的方式设计两个系统之间的通信。出于本教程的目的,我们将 JWT 重新表述为“不记名 token ”。不记名 token 由三部分组成: header 、负载和签名。

  • header是token的一部分,保存了token类型和加密方式,同样采用base-64加密
  • 有效负载包含信息。您可以放置​​任何类型的数据,例如用户信息、产品信息等,所有这些数据都使用 Base-64 加密进行存储。
  • 签名由 header 、负载和 key 的组合组成。 key 必须安全地保存在服务器端。

带有示例的教程可以在这里找到 Token-Based Authentication With AngularJS & NodeJS .

希望这能解决您的问题,祝一切顺利!!

关于angularjs - Angular 中的 CSRF token 与 Laravel 5 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922717/

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