Cách kiểm tra mã thông báo JWT đã hết hạn trong PHP?
Đảm bảo rằng tường lửa 3 được đặt trước 4 và nếu có 5, hãy đặt nó sau 4, nếu không bạn sẽ gặp phải tình trạng không tìm thấy tuyến đường 7 Show
0 1 2_______5_______31 2 3 5To enable the API Platform compatibility, add the 8 configuration option as following 6 7The first step is to authenticate the user using its credentials. You can test getting the token with a simple curl command like this (adapt host and port) Linux or macOS 1 9Windows 1 1 2 3 41 If it works, you will receive something like this 1 2 3 1 2 3 43 Store it (client side), the JWT is reusable until its TTL has expired (3600 seconds by default) Simply pass the JWT on each request to the protected firewall, either as an authorization header or as a query parameter By default only the authorization header mode is enabled . 9See the configuration reference document to enable query string parameter mode or change the header value prefix See Functionally testing a JWT protected api document or the sandbox application Symfony4) for a fully working example Each request after token expiration will result in a 401 response. Redo the authentication process to obtain a new token Maybe you want to use a refresh token to renew your JWT. In this case you can check JWTRefreshTokenBundle This is more of a Symfony2 related topic, but see Working with CORS requests document to get a quick explanation on handling CORS requests For impersonating users using JWT, see https. //symfony. com/doc/current/security/impersonating_user. html As stated in this link and this one, Apache server will strip any 10 not in a valid HTTP BASIC AUTH format If you intend to use the authorization header mode of this bundle (and you should), please add those rules to your VirtualHost configuration Authentication is one of the most important parts of any web application. For decades, cookies and server-based authentication was the easiest solution. However, handling authentication in modern Mobile and Single Page Applications can be tricky and demand a better approach. One of the best known solutions to authentication problems for APIs is the JSON Web Token (JWT) By Tino Tkalec Tino is a software engineer with 10+ years of experience in creating native Windows and Web Applications. He’s a LAMP stack expert SHARE SHARE With the rising popularity of single page applications, mobile applications, and RESTful API services, the way web developers write back-end code has changed significantly. With technologies like AngularJS and BackboneJS, we are no longer spending much time building markup, instead we are building APIs that our front-end applications consume. Our back-end is more about business logic and data, while presentation logic is moved exclusively to the front-end or mobile applications. These changes have led to new ways of implementing authentication in modern applications Authentication is one of the most important parts of any web application. For decades, cookies and server-based authentication were the easiest solution. However, handling authentication in modern Mobile and Single Page Applications can be tricky, and demand a better approach. The best known solutions to authentication problems for APIs are the OAuth 2. 0 and the JSON Web Token (JWT) Before we get into this JSON Web Token tutorial, what exactly is a JWT? What is a JSON Web Token?A JSON Web Token is used to send information that can be verified and trusted by means of a digital signature. It comprises a compact and URL-safe JSON object, which is cryptographically signed to verify its authenticity, and which can also be encrypted if the payload contains sensitive information Because of its compact structure, JWT is usually used in HTTP 3 headers or URL query parametersStructure of a JSON Web TokenA JWT is represented as a sequence of base64url encoded values that are separated by period characters Here is a JWT token example
tiêu đềThe header contains the metadata for the token and it minimally contains the type of signature and the encryption algorithm. (You can use a JSON formatter tool to prettify the JSON object. ) Example Header
This JWT example header declares that the encoded object is a JSON Web Token, and that it is signed using the HMAC SHA-256 algorithm Once this is base64 encoded, we have the first part of our JWT
Payload (Claims)In the context of JWT, a claim can be defined as a statement about an entity (typically, the user), as well as additional metadata about the token itself. The claim contains the information we want to transmit, and that the server can use to properly handle JSON Web Token authentication. There are multiple claims we can provide; these include registered claim names, public claim names and private claim names Registered JWT Claims These are the claims that are registered in the . These JWT claims are not intended to be mandatory but rather to provide a starting point for a set of useful, interoperable claims These include
Public Claims Public claims need to have collision-resistant names. By making the name a URI or URN, naming collisions are avoided for JWTs where the sender and receiver are not part of a closed network An example of a public claim name could be. 4, and the best practice is to place a file at that location describing the claim so that it can be dereferenced for documentationPrivate Claims Private claim-names may be used in places where JWTs are only exchanged in a closed environment between known systems, such as inside an enterprise. These are claims that we can define ourselves, like user IDs, user roles, or any other information Using claim-names that might have conflicting semantic meanings outside of a closed or private system are subject to collision, so use them with caution It is important to note that we want to keep a web token as small as possible, so use only necessary data inside public and private claims JWT Example Payload
This example payload has two registered claims, one public claim and two private claims. Once it is base64 encoded, we have the second part of our JWT
SignatureThe JWT standard follows the JSON Web Signature (JWS) specification to generate the final signed token. It is generated by combining the encoded JWT Header and the encoded JWT Payload, and signing it using a strong encryption algorithm, such as HMAC SHA-256. The signature’s secret key is held by the server so it will be able to verify existing tokens and sign new ones
Điều này mang lại cho chúng tôi phần cuối cùng của JWT
Bảo mật và mã hóa JWTĐiều quan trọng là sử dụng TLS/SSL kết hợp với JWT để ngăn chặn các cuộc tấn công trung gian. Trong hầu hết các trường hợp, điều này sẽ đủ để mã hóa tải trọng JWT nếu nó chứa thông tin nhạy cảm. Tuy nhiên, nếu chúng tôi muốn thêm một lớp bảo vệ bổ sung, chúng tôi có thể tự mã hóa tải trọng JWT bằng cách sử dụng đặc tả Mã hóa Web JSON (JWE) Tất nhiên, nếu chúng tôi muốn tránh chi phí bổ sung khi sử dụng JWE, một tùy chọn khác là chỉ cần giữ thông tin nhạy cảm trong cơ sở dữ liệu của chúng tôi và sử dụng mã thông báo của chúng tôi cho các lệnh gọi API bổ sung tới máy chủ bất cứ khi nào chúng tôi cần truy cập dữ liệu nhạy cảm Tại sao lại cần Web Token?Trước khi chúng ta có thể thấy tất cả các lợi ích của việc sử dụng xác thực JWT, chúng ta phải xem cách xác thực đã được thực hiện trong quá khứ Xác thực dựa trên máy chủVì giao thức HTTP là phi trạng thái nên cần có cơ chế lưu trữ thông tin người dùng và cách xác thực người dùng trong mọi yêu cầu tiếp theo sau khi đăng nhập. Hầu hết các trang web sử dụng cookie để lưu trữ ID phiên của người dùng Làm thế nào nó hoạt động Trình duyệt gửi yêu cầu POST tới máy chủ có chứa thông tin nhận dạng và mật khẩu của người dùng. Máy chủ phản hồi bằng cookie, được đặt trên trình duyệt của người dùng và bao gồm ID phiên để xác định người dùng Trong mọi yêu cầu tiếp theo, máy chủ cần tìm phiên đó và giải tuần tự hóa nó, vì dữ liệu người dùng được lưu trữ trên máy chủ Hạn chế của xác thực dựa trên máy chủ
Token-Based AuthenticationToken based/JWT authentication is stateless, so there is no need to store user information in the session. This gives us the ability to scale our application without worrying where the user has logged in. We can easily use the same token for fetching a secure resource from a domain other than the one we are logged in to How JSON Web Tokens Work A browser or mobile client makes a request to the authentication server containing user login information. The authentication server generates a new JWT access token and returns it to the client. On every request to a restricted resource, the client sends the access token in the query string or 3 header. The server then validates the token and, if it’s valid, returns the secure resource to the clientThe authentication server can sign the token using any secure signature method. For example, a symmetric key algorithm such as HMAC SHA-256 can be used if there is a secure channel to share the secret key among all parties. Alternatively, an asymmetric, public-key system, such as RSA, can be used as well, eliminating the need for further key-sharing Advantages of Token-Based AuthenticationStateless, easier to scale. The token contains all the information to identify the user, eliminating the need for the session state. If we use a load balancer, we can pass the user to any server, instead of being bound to the same server we logged in on Reusability. We can have many separate servers, running on multiple platforms and domains, reusing the same token for authenticating the user. It is easy to build an application that shares permissions with another application JWT Security. Since we are not using cookies, we don’t have to protect against cross-site request forgery (CSRF) attacks. We should still encrypt our tokens using JWE if we have to put any sensitive information in them, and transmit our tokens over HTTPS to prevent man-in-the-middle attacks Performance. There is no server side lookup to find and deserialize the session on each request. The only thing we have to do is calculate the HMAC SHA-256 to validate the token and parse its content A JSON Web Token Example using Laravel 5 and AngularJSIn this JWT tutorial I am going to demonstrate how to implement the basic authentication using JSON Web Tokens in two popular web technologies. Laravel 5 for the backend code and AngularJS for the frontend Single Page Application (SPA) example. (You can find the source code in this GitHub repository so that you can follow along with the tutorial. ) This JSON web token example will not use any kind of encryption to ensure the confidentiality of the information transmitted in the claims. In practice this is often okay, because TLS/SSL encrypts the request. However, if the token is going to contain sensitive information, such as the user’s social security number, it should also be encrypted using JWE Laravel Backend ExampleWe will use Laravel to handle user registration, persisting user data to a database and providing some restricted data that needs authentication for the Angular app to consume. We will create an example API subdomain to simulate Cross-origin resource sharing (CORS) as well Installation and Project Bootstrapping In order to use Laravel, we have to install the Composer package manager on our machine. When developing in Laravel I recommend using the Laravel Homestead pre-packaged “box” of Vagrant. It provides us with a complete development environment regardless of our operating system The easiest way to bootstrap our JWT Laravel application is to use a Composer package Laravel Installer
Now we are all ready to create a new Laravel project by running 6For any questions about this process please refer to the official Laravel documentation After we have created the basic Laravel 5 application, we need to set up our 7, which will configure folder mappings and domains configuration for our local environmentVí dụ về tệp 7
After we’ve booted up our Vagrant box with the 9 command and logged into it using 0, we navigate to the previously defined project directory. In the example above this would be 1. We can now run 2 command in order to create the necessary user tables in our databaseInstalling Composer Dependencies Fortunately, there is a community of developers working on Laravel and maintaining many great packages that we can reuse and extend our application with. In this example we will use 3, by Sean Tymon, for handling tokens on the server side, and 4, by Barry vd. Heuvel, for handling CORSjwt-auth Require the 3 package in our 6 and update our dependencies
Add the 7 to our 8 providers array 0Next, in 8 file, under the 0 array, we add the 1 facade 1Finally, we will want to publish the package config using the following command. php artisan config. publish tymon/jwt-auth JSON Web tokens are encrypted using a secret key. We can generate that key using the 2 command. It will be placed inside our 3 file. In the production environment, however, we never want to have our passwords or API keys inside configuration files. Instead, we should place them inside server environment variables and reference them in the configuration file with the 4 function. For example 2We can find out more about this package and all of it’s config settings on Github laravel-cors Require the 4 package in our 6 and update our dependencies 3Add the 7 to our 8 providers array 4Then add the middleware to our 9 5Publish the configuration to a local 0 file by using the 1 commandExample of a 2 file configuration 6Routing and Handling HTTP Requests For the sake of brevity, I will put all my code inside the routes. php chịu trách nhiệm định tuyến Laravel và ủy quyền các yêu cầu cho bộ điều khiển. Chúng tôi thường tạo các bộ điều khiển chuyên dụng để xử lý tất cả các yêu cầu HTTP của mình và giữ cho mã của chúng tôi theo mô-đun và sạch sẽ Chúng tôi sẽ tải chế độ xem AngularJS SPA của mình bằng cách sử dụng 7Đăng ký người dùng Khi chúng tôi yêu cầu 3 gửi tới 4 bằng tên người dùng và mật khẩu, chúng tôi sẽ cố gắng tạo một người dùng mới và lưu nó vào cơ sở dữ liệu. Sau khi người dùng đã được tạo, JWT được tạo và trả về thông qua phản hồi JSON 8Đăng nhập người dùng Khi chúng tôi thực hiện yêu cầu 3 tới 6 bằng tên người dùng và mật khẩu, chúng tôi xác minh rằng người dùng đó tồn tại và trả về JWT thông qua phản hồi JSON 9Tìm nạp tài nguyên bị hạn chế trên cùng một miền Sau khi người dùng đăng nhập, chúng tôi có thể tìm nạp tài nguyên bị hạn chế. Tôi đã tạo một tuyến đường 7 mô phỏng tài nguyên cần người dùng được xác thực. Để thực hiện việc này, yêu cầu tiêu đề hoặc chuỗi truy vấn 3 cần cung cấp JWT cho chương trình phụ trợ để xác minh 0Trong ví dụ này, tôi đang sử dụng phần mềm trung gian 9 được cung cấp trong gói 9 bằng cách sử dụng 1. Phần mềm trung gian này được sử dụng để lọc yêu cầu và xác thực mã thông báo JWT. Nếu mã thông báo không hợp lệ, không có hoặc hết hạn, phần mềm trung gian sẽ đưa ra một ngoại lệ mà chúng tôi có thể bắt đượcTrong Laravel 5, chúng ta có thể bắt ngoại lệ bằng cách sử dụng tệp 2. Sử dụng chức năng 3, chúng ta có thể tạo phản hồi HTTP dựa trên ngoại lệ được ném 1Nếu người dùng được xác thực và mã thông báo hợp lệ, chúng tôi có thể trả lại dữ liệu bị hạn chế một cách an toàn cho giao diện người dùng thông qua JSON Tìm nạp tài nguyên bị hạn chế từ tên miền con API Trong ví dụ về mã thông báo web JSON tiếp theo, chúng tôi sẽ thực hiện một cách tiếp cận khác để xác thực mã thông báo. Thay vì sử dụng phần mềm trung gian 9, chúng tôi sẽ xử lý ngoại lệ theo cách thủ công. Khi chúng tôi thực hiện yêu cầu 3 tới máy chủ API 6, chúng tôi đang thực hiện yêu cầu nhiều nguồn gốc và phải bật CORS trên phần phụ trợ. May mắn thay, chúng tôi đã cấu hình CORS trong tệp 0 2Ví dụ giao diện người dùng AngularJSChúng tôi đang sử dụng AngularJS làm giao diện người dùng, dựa vào các lệnh gọi API đến máy chủ xác thực back-end của Laravel để xác thực người dùng và dữ liệu mẫu, cộng với máy chủ API cho dữ liệu ví dụ về nhiều nguồn gốc. Khi chúng tôi truy cập trang chủ của dự án, phần phụ trợ sẽ phục vụ chế độ xem 8 sẽ khởi động ứng dụng AngularĐây là cấu trúc thư mục của ứng dụng Angular 3Khởi động ứng dụng góc 9 chứa các yếu tố cơ bản cần thiết để chạy ứng dụng. Chúng tôi sẽ sử dụng Twitter Bootstrap để tạo kiểu, cùng với chủ đề tùy chỉnh từ Bootswatch. Để có một số phản hồi trực quan khi thực hiện cuộc gọi AJAX, chúng tôi sẽ sử dụng tập lệnh thanh tải góc, chặn các yêu cầu XHR và tạo thanh tải. Trong phần tiêu đề, chúng tôi có các biểu định kiểu sau 4Phần cuối của đánh dấu của chúng tôi chứa các tham chiếu đến các thư viện, cũng như các tập lệnh tùy chỉnh của chúng tôi cho các mô-đun, bộ điều khiển và dịch vụ Angular 5Chúng tôi đang sử dụng thư viện 0 cho AngularJS, để lưu mã thông báo vào bộ nhớ cục bộ của trình duyệt, để chúng tôi có thể gửi nó theo từng yêu cầu thông qua tiêu đề 3Tất nhiên, trong môi trường sản xuất, chúng tôi sẽ thu nhỏ và kết hợp tất cả các tệp tập lệnh và biểu định kiểu để cải thiện hiệu suất Tôi đã tạo một thanh điều hướng bằng Bootstrap sẽ thay đổi mức độ hiển thị của các liên kết phù hợp, tùy thuộc vào trạng thái đăng nhập của người dùng. Trạng thái đăng nhập được xác định bởi sự hiện diện của biến 2 trong phạm vi của bộ điều khiển 6Lộ trình Chúng tôi có một tệp có tên 3 chịu trách nhiệm định cấu hình tất cả các tuyến giao diện người dùng của chúng tôi 7Ở đây chúng ta có thể thấy rằng chúng ta đã xác định bốn route được xử lý bởi 4 hoặc 5. Mọi tuyến tương ứng với chế độ xem HTML một phần. Chúng tôi cũng đã xác định hai hằng số chứa URL cho các yêu cầu HTTP của chúng tôi tới chương trình phụ trợYêu cầu đánh chặn Dịch vụ $http của AngularJS cho phép chúng tôi giao tiếp với phụ trợ và thực hiện các yêu cầu HTTP. Trong trường hợp của chúng tôi, chúng tôi muốn chặn mọi yêu cầu HTTP và đưa vào đó một tiêu đề 3 chứa JWT của chúng tôi nếu người dùng được xác thực. Chúng tôi cũng có thể sử dụng trình chặn để tạo trình xử lý lỗi HTTP toàn cầu. Dưới đây là một ví dụ về trình chặn của chúng tôi sẽ chèn mã thông báo nếu nó có sẵn trong bộ nhớ cục bộ của trình duyệt 8Bộ điều khiển Trong tệp 7, chúng tôi đã xác định hai bộ điều khiển cho ứng dụng của mình. 4 và 5. 4 xử lý chức năng đăng nhập, đăng ký và đăng xuất. Nó chuyển dữ liệu tên người dùng và mật khẩu từ các biểu mẫu đăng nhập và đăng ký đến dịch vụ 1, dịch vụ này sẽ gửi các yêu cầu HTTP đến phần phụ trợ. Sau đó, nó lưu mã thông báo vào bộ nhớ cục bộ hoặc hiển thị thông báo lỗi, tùy thuộc vào phản hồi từ chương trình phụ trợ 9 5 hoạt động theo cùng một cách, chỉ có điều nó tìm nạp dữ liệu bằng cách sử dụng các hàm 3 và 4 trên dịch vụ 5 0Chương trình phụ trợ chỉ chịu trách nhiệm cung cấp dữ liệu bị hạn chế nếu người dùng được xác thực. Điều này có nghĩa là để phản hồi với dữ liệu bị hạn chế, yêu cầu đối với dữ liệu đó cần chứa JWT hợp lệ bên trong tiêu đề 3 hoặc chuỗi truy vấn của nó. Nếu không đúng như vậy, máy chủ sẽ phản hồi bằng mã trạng thái lỗi 401 UnauthorizedDịch vụ xác thực Dịch vụ xác thực chịu trách nhiệm thực hiện đăng nhập và đăng ký các yêu cầu HTTP đến phần phụ trợ. Nếu yêu cầu thành công, phản hồi chứa mã thông báo đã ký, mã này sau đó được giải mã base64 và thông tin xác nhận quyền sở hữu mã thông báo kèm theo được lưu vào biến 7. Điều này được chuyển đến bộ điều khiển thông qua chức năng 8 1Dịch vụ dữ liệu Đây là một dịch vụ đơn giản đưa ra các yêu cầu đối với máy chủ xác thực cũng như máy chủ API đối với một số dữ liệu giả bị hạn chế. It makes the request, and delegates success and error callbacks to the controller 2Ngoài Hướng dẫn Mã thông báo Web JSON nàyXác thực dựa trên mã thông báo cho phép chúng tôi xây dựng các hệ thống tách rời không bị ràng buộc với một sơ đồ xác thực cụ thể. Mã thông báo có thể được tạo ở bất kỳ đâu và được sử dụng trên bất kỳ hệ thống nào sử dụng cùng một khóa bí mật để ký mã thông báo. Chúng sẵn sàng cho thiết bị di động và không yêu cầu chúng tôi sử dụng cookie Mã thông báo web JSON hoạt động trên tất cả các ngôn ngữ lập trình phổ biến và nhanh chóng trở nên phổ biến. Chúng được hỗ trợ bởi các công ty như Google, Microsoft và Zendesk. Thông số kỹ thuật tiêu chuẩn của Lực lượng đặc nhiệm kỹ thuật Internet (IETF) vẫn đang ở phiên bản dự thảo và có thể thay đổi một chút trong tương lai Vẫn còn nhiều điều cần đề cập về JWT, chẳng hạn như cách xử lý các chi tiết bảo mật và làm mới mã thông báo khi chúng hết hạn, nhưng hướng dẫn Mã thông báo web JSON sẽ trình bày cách sử dụng cơ bản và quan trọng hơn là lợi ích của việc sử dụng JWT Đọc thêm trên Blog Kỹ thuật Toptal
Hiểu những điều cơ bảnMã thông báo mang là gì?Điều này đề cập đến một JWT, được truyền qua tiêu đề HTTP có tên là Ủy quyền, ở định dạng chuỗi "Bearer $your_token_here" JWT là gì?JWT là viết tắt của JSON Web Token, một chiến thuật xác thực phổ biến được sử dụng trong các ứng dụng web hiện đại JSON hoạt động như thế nào?JSON chỉ đơn giản là một định dạng dữ liệu gần giống với định dạng dữ liệu bằng chữ được JavaScript cho phép. Đó là một định dạng phân cấp cho phép các đối tượng và mảng lồng nhau, cũng như các ký tự chuỗi và số thẻ Xác thựcJWTAỦy quyềnNoCookiesNgười làm việc tự do? Tìm công việc tiếp theo của bạn. Việc làm Web Developer Xem thông tin đầy đủ Tino Tkalec Kỹ sư phần mềm tự do Thông tin về các Tác giả Tino là một kỹ sư phần mềm với hơn 10 năm kinh nghiệm trong việc tạo các ứng dụng web và Windows gốc. Anh ấy có kinh nghiệm dày dặn với LAMP stack và khả năng tái cấu trúc mã spaghetti thành mã có thể kiểm tra và tái sử dụng Thuê Tino Bình luậnAgustín Santiago Castaño Nội dung rất thú vị và hiện tại Agustín Santiago Castaño Nội dung rất thú vị và hiện tại Alex Xela Cảm ơn bạn vì bài viết thú vị, nhưng đối với tôi, ưu và nhược điểm của từng phương pháp có vẻ khá yếu. Ví dụ: sử dụng JWT, máy chủ của bạn có chi phí hoạt động bị lộ do xác thực mã thông báo trên mỗi yêu cầu (i. e. giống như trong cookie). Vấn đề CORS hoàn toàn không được mô tả. Điểm cuối cùng - loại bỏ khớp nối với khung có vẻ đúng. Nhưng mà. Tại thời điểm này, chúng tôi đã kết hợp với thư viện xử lý JWT (tiêu chuẩn của nó vẫn đang thảo luận). Cuối cùng, đó là cách tiếp cận mới thú vị, nhưng thực tế nó không cung cấp bất kỳ lý do mạnh mẽ nào để sử dụng nó thay vì cách dựa trên cookie Alex Xela Cảm ơn bạn vì bài viết thú vị, nhưng đối với tôi, ưu và nhược điểm của từng phương pháp có vẻ khá yếu. Ví dụ: sử dụng JWT, máy chủ của bạn có chi phí hoạt động bị lộ do xác thực mã thông báo trên mỗi yêu cầu (i. e. giống như trong cookie). Vấn đề CORS hoàn toàn không được mô tả. Điểm cuối cùng - loại bỏ khớp nối với khung có vẻ đúng. Nhưng mà. Tại thời điểm này, chúng tôi đã kết hợp với thư viện xử lý JWT (tiêu chuẩn của nó vẫn đang thảo luận). Cuối cùng, đó là cách tiếp cận mới thú vị, nhưng thực tế nó không cung cấp bất kỳ lý do mạnh mẽ nào để sử dụng nó thay vì cách dựa trên cookie Ahmed Abdel Razzak Mối quan tâm duy nhất của tôi là làm thế nào để đăng xuất người dùng. Bạn có thể xóa mã thông báo khỏi bộ nhớ cục bộ. nhưng miễn là nó chưa hết hạn, nó có thể được sử dụng lại. Một giải pháp đơn giản là giữ một tham chiếu về mã thông báo nào đã hết hạn bởi người dùng (đăng xuất thủ công) và xóa mã thông báo đó. Và giữ một tham chiếu về id mã thông báo trong jwt thay vì id người dùng. Tôi biết nó giống như mã có mùi. Nhưng thực sự không thể tìm thấy bất kỳ giải pháp nào khác. Bất kỳ ý tưởng? Ahmed Abdel Razzak Mối quan tâm duy nhất của tôi là làm thế nào để đăng xuất người dùng. Bạn có thể xóa mã thông báo khỏi bộ nhớ cục bộ. nhưng miễn là nó chưa hết hạn, nó có thể được sử dụng lại. Một giải pháp đơn giản là giữ một tham chiếu về mã thông báo nào đã hết hạn bởi người dùng (đăng xuất thủ công) và xóa mã thông báo đó. Và giữ một tham chiếu về id mã thông báo trong jwt thay vì id người dùng. Tôi biết nó giống như mã có mùi. Nhưng thực sự không thể tìm thấy bất kỳ giải pháp nào khác. Bất kỳ ý tưởng? Vitaly Dyatlov Điều tương tự cũng áp dụng cho cookie. Bạn có thể xóa cookie nhưng vẫn có thể sử dụng nó để xác thực. Trừ khi bạn thông báo cho máy chủ về những thay đổi của mình - bạn sẽ gặp rủi ro Vitaly Dyatlov Điều tương tự cũng áp dụng cho cookie. Bạn có thể xóa cookie nhưng vẫn có thể sử dụng nó để xác thực. Trừ khi bạn thông báo cho máy chủ về những thay đổi của mình - bạn sẽ gặp rủi ro Tino Tkalec Không có cách nào để dễ dàng vô hiệu hóa mã thông báo mà không liên quan đến cơ sở dữ liệu. Bạn có thể muốn xem mã thông báo làm mới để giúp bạn thực hiện việc này. https. //auth0. com/docs/refresh-token Nếu bạn chỉ xóa mã thông báo trên máy khách, nó sẽ không ảnh hưởng gì đến bảo mật phía máy chủ. Tôi nghĩ cách tốt nhất là giữ cho thời gian hết hạn của mã thông báo ngắn và xoay vòng chúng thường xuyên. Điều này cũng có nhược điểm của nó. Bảo mật mã thông báo và các phương pháp hay nhất là một chủ đề rộng, xứng đáng với một bài đăng trên blog khác Tino Tkalec Không có cách nào để dễ dàng vô hiệu hóa mã thông báo mà không liên quan đến cơ sở dữ liệu. Bạn có thể muốn xem mã thông báo làm mới để giúp bạn thực hiện việc này. https. //auth0. com/docs/refresh-token Nếu bạn chỉ xóa mã thông báo trên máy khách, nó sẽ không ảnh hưởng gì đến bảo mật phía máy chủ. Tôi nghĩ cách tốt nhất là giữ cho thời gian hết hạn của mã thông báo ngắn và xoay vòng chúng thường xuyên. Điều này cũng có nhược điểm của nó. Bảo mật mã thông báo và các phương pháp hay nhất là một chủ đề rộng, xứng đáng với một bài đăng trên blog khác Vitaly Dyatlov nó thực sự dễ dàng hơn cho các ứng dụng di động. Bạn không thể sử dụng cookie trong các ứng dụng yên tĩnh Vitaly Dyatlov nó thực sự dễ dàng hơn cho các ứng dụng di động. Bạn không thể sử dụng cookie trong các ứng dụng yên tĩnh Tino Tkalec JWT không phù hợp với mọi thứ nhưng chúng giúp chúng tôi linh hoạt hơn khi sử dụng xác thực dựa trên cookie, đặc biệt là đối với các ứng dụng dành cho thiết bị di động. Tôi không muốn đi sâu vào CORS, vì bản thân nó là một con quái vật. Xác thực mã thông báo có ít chi phí hơn so với việc tìm phiên trong cơ sở dữ liệu và giải tuần tự hóa nó. Bạn không được kết hợp với thư viện xử lý JWT, bởi vì mọi thư viện sẽ mang lại JWT trông giống như đầu ra. Tiêu chuẩn của JWT vẫn chưa được hoàn thiện, nhưng chắc chắn sẽ không có bất kỳ thay đổi lớn nào ở đó và các thư viện sẽ điều chỉnh cho phù hợp Tino Tkalec JWT không phù hợp với mọi thứ nhưng chúng giúp chúng tôi linh hoạt hơn khi sử dụng xác thực dựa trên cookie, đặc biệt là đối với các ứng dụng dành cho thiết bị di động. Tôi không muốn đi sâu vào CORS, vì bản thân nó là một con quái vật. Xác thực mã thông báo có ít chi phí hơn so với việc tìm phiên trong cơ sở dữ liệu và giải tuần tự hóa nó. Bạn không được kết hợp với thư viện xử lý JWT, bởi vì mọi thư viện sẽ mang lại JWT trông giống như đầu ra. Tiêu chuẩn của JWT vẫn chưa được hoàn thiện, nhưng chắc chắn sẽ không có bất kỳ thay đổi lớn nào ở đó và các thư viện sẽ điều chỉnh cho phù hợp Alex Xela nó không giống nhau. Phiên lưu trữ cookie được đồng bộ hóa trên máy khách và phía máy chủ. Vì vậy, máy chủ có thể làm mất hiệu lực phiên của khách hàng (theo thời gian chờ hoặc theo yêu cầu). Đó là ưu điểm mạnh của ứng dụng "trạng thái". Tôi đặt "trạng thái" trong dấu ngoặc kép vì nó khác với thuật ngữ "trạng thái" thường được sử dụng. Ví dụ: ứng dụng có phụ trợ DB có thể không trạng thái nhưng vẫn giữ phiên người dùng Alex Xela nó không giống nhau. Phiên lưu trữ cookie được đồng bộ hóa trên máy khách và phía máy chủ. Vì vậy, máy chủ có thể làm mất hiệu lực phiên của khách hàng (theo thời gian chờ hoặc theo yêu cầu). Đó là ưu điểm mạnh của ứng dụng "trạng thái". Tôi đặt "trạng thái" trong dấu ngoặc kép vì nó khác với thuật ngữ "trạng thái" thường được sử dụng. Ví dụ: ứng dụng có phụ trợ DB có thể không trạng thái nhưng vẫn giữ phiên người dùng Ryan J. Peterson Cũng như một lưu ý, tuyến đường Nhà cung cấp hiện là. 'Tymon\JWTAuth\Nhà cung cấp\JWTAut' Ryan J. Peterson Cũng như một lưu ý, tuyến đường Nhà cung cấp hiện là. 'Tymon\JWTAuth\Nhà cung cấp\JWTAut' Tino Tkalec Cảm ơn Ryan. tôi sẽ cập nhật nó Tino Tkalec Cảm ơn Ryan. tôi sẽ cập nhật nó John L Magee Đây là một bài viết hay về Xác thực. Ở những nơi dường như sử dụng thuật ngữ Xác thực và Ủy quyền thay thế cho nhau. Một số làm rõ và có lẽ một bài viết tiếp theo sẽ rất hữu ích John L Magee Đây là một bài viết hay về Xác thực. Ở những nơi dường như sử dụng thuật ngữ Xác thực và Ủy quyền thay thế cho nhau. Một số làm rõ và có lẽ một bài viết tiếp theo sẽ rất hữu ích Eduardo Pereira Bạn có thể kiểm tra cơ sở dữ liệu nếu người dùng đã đăng nhập (boolean), đồng thời kiểm tra xem mã thông báo đã hết hạn hay được đánh dấu là không hợp lệ hay chưa, các yêu cầu JWT có thể giúp bạn đạt được điều đó. Như đã nêu trước đó, không có cách nào dễ dàng để đăng xuất mã thông báo JWT mà không liên quan đến một số cơ sở dữ liệu phụ trợ Eduardo Pereira Bạn có thể kiểm tra cơ sở dữ liệu nếu người dùng đã đăng nhập (boolean), đồng thời kiểm tra xem mã thông báo đã hết hạn hay được đánh dấu là không hợp lệ hay chưa, các yêu cầu JWT có thể giúp bạn đạt được điều đó. Như đã nêu trước đó, không có cách nào dễ dàng để đăng xuất mã thông báo JWT mà không liên quan đến một số cơ sở dữ liệu phụ trợ Eduardo Pereira Theo quan điểm của tôi. http. //jwt. io/ Eduardo Pereira Theo quan điểm của tôi. http. //jwt. io/ Tino Tkalec Này John, tnx cho nhận xét. Bài viết này tập trung vào xác thực đề cập (trong thời gian ngắn) để xác định rằng ai đó là người mà anh ta tuyên bố là. Ủy quyền đề cập đến quyền của người dùng hoặc những gì người dùng được phép làm. Một chỗ trong bài viết mà tôi thường đề cập đến ủy quyền là "Tiêu đề ủy quyền" được xác định bởi giao thức HTTP. Có một vài chỗ khác mà tôi đã sử dụng nhầm thuật ngữ ủy quyền thay vì xác thực, nhưng điều đó hiện đã được khắc phục Tino Tkalec Này John, tnx cho nhận xét. Bài viết này tập trung vào xác thực đề cập (trong thời gian ngắn) để xác định rằng ai đó là người mà anh ta tuyên bố là. Ủy quyền đề cập đến quyền của người dùng hoặc những gì người dùng được phép làm. Một chỗ trong bài viết mà tôi thường đề cập đến ủy quyền là "Tiêu đề ủy quyền" được xác định bởi giao thức HTTP. Có một vài chỗ khác mà tôi đã sử dụng nhầm thuật ngữ ủy quyền thay vì xác thực, nhưng điều đó hiện đã được khắc phục Ahmed Abdel Razzak Chỉ để đảm bảo rằng mọi người đều có ý tưởng về cách tôi giải quyết vấn đề (để tham khảo và đề xuất) 1 - Tôi đã thêm mô hình mã thông báo xác thực vào cơ sở dữ liệu chỉ có 2 trường (id, mã thông báo) 2 - Tôi đã thêm . 3- Nếu người dùng cố gắng đăng nhập bằng mã thông báo, chỉ cần kiểm tra xem id trong tải trọng (hoặc chính mã thông báo) có tồn tại hay không. Nếu không thì anh ta phải đăng xuất trước đó. --- PS Giải pháp này chỉ hoạt động với trường id và trên thực tế, nó an toàn hơn (trong trường hợp vi phạm), nhưng tôi cần lưu mã thông báo và nhiều thông tin "phiên" khác cho các mục đích khác) Nếu bạn nghĩ rằng điều này . hãy chia sẻ với tôi những gì bạn nghĩ. D Ahmed Abdel Razzak Chỉ để đảm bảo rằng mọi người đều có ý tưởng về cách tôi giải quyết vấn đề (để tham khảo và đề xuất) 1 - Tôi đã thêm mô hình mã thông báo xác thực vào cơ sở dữ liệu chỉ có 2 trường (id, mã thông báo) 2 - Tôi đã thêm . 3- Nếu người dùng cố gắng đăng nhập bằng mã thông báo, chỉ cần kiểm tra xem id trong tải trọng (hoặc chính mã thông báo) có tồn tại hay không. Nếu không thì anh ta phải đăng xuất trước đó. --- PS Giải pháp này chỉ hoạt động với trường id và trên thực tế, nó an toàn hơn (trong trường hợp vi phạm), nhưng tôi cần lưu mã thông báo và nhiều thông tin "phiên" khác cho các mục đích khác) Nếu bạn nghĩ rằng điều này . hãy chia sẻ với tôi những gì bạn nghĩ. D Ahmed Abdel Razzak +1 cho mã thông báo làm mới Ahmed Abdel Razzak +1 cho mã thông báo làm mới Rohan Deshpande hướng dẫn tuyệt vời. Tuy nhiên, tôi đang gặp một số sự cố, về cơ bản, tôi không thể thực hiện các yêu cầu Ajax đối với tên miền phụ api của mình vì tôi liên tục gặp lỗi không khớp mã thông báo csrf. Có ai khác trải nghiệm điều này? . ajaxSetup() (đã hoạt động tốt trước khi tôi sử dụng api) nên tôi không chắc chuyện gì đang xảy ra. Bất kỳ ý tưởng? . hmm vừa thấy lưu ý về việc không cần CSRF vì phương pháp này không sử dụng cookie. Ngọt Rohan Deshpande hướng dẫn tuyệt vời. Tuy nhiên, tôi đang gặp một số sự cố, về cơ bản, tôi không thể thực hiện các yêu cầu Ajax đối với tên miền phụ api của mình vì tôi liên tục gặp lỗi không khớp mã thông báo csrf. Có ai khác trải nghiệm điều này? . ajaxSetup() (đã hoạt động tốt trước khi tôi sử dụng api) nên tôi không chắc chuyện gì đang xảy ra. Bất kỳ ý tưởng? . hmm vừa thấy lưu ý về việc không cần CSRF vì phương pháp này không sử dụng cookie. Ngọt Sean Tymon Thông tin cho bạn biết, gói jwt-auth của tôi có tính năng vô hiệu hóa mã thông báo và làm mới tích hợp sẵn. Nó sử dụng trình điều khiển bộ đệm của Laravel theo mặc định, nhưng bất kỳ kho lưu trữ giá trị khóa nào cũng đủ. Xem tại đây để tham khảo (chưa hoàn thành tài liệu đầy đủ) - https. //github. com/tymondesigns/jwt-auth/blob/master/src/JWTAuth. php#L126-L144 Sean Tymon Thông tin cho bạn biết, gói jwt-auth của tôi có tính năng vô hiệu hóa mã thông báo và làm mới tích hợp sẵn. Nó sử dụng trình điều khiển bộ đệm của Laravel theo mặc định, nhưng bất kỳ kho lưu trữ giá trị khóa nào cũng đủ. Xem tại đây để tham khảo (chưa hoàn thành tài liệu đầy đủ) - https. //github. com/tymondesigns/jwt-auth/blob/master/src/JWTAuth. php#L126-L144 Bradley Suira Xin chào, để xuất bản JWTAuth là. nhà cung cấp thủ công php. xuất bản --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" --tag="config" Bradley Suira Xin chào, để xuất bản JWTAuth là. nhà cung cấp thủ công php. xuất bản --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" --tag="config" Alberto Cole Sẽ không an toàn khi lưu trữ thông tin nhạy cảm trên bộ lưu trữ cục bộ? . thực sự có một sự thay thế. Gửi JWT qua Cookie và Cookie được đặt thành HttpOnly để không có mã JS nào có thể truy cập nó, sự đánh đổi ở đây là xử lý CORS/XSRF, có một bài đọc hay về điều này nếu bạn quan tâm https. //đường bão. com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ Alberto Cole Sẽ không an toàn khi lưu trữ thông tin nhạy cảm trên bộ lưu trữ cục bộ? . thực sự có một sự thay thế. Gửi JWT qua Cookie và Cookie được đặt thành HttpOnly để không có mã JS nào có thể truy cập nó, sự đánh đổi ở đây là xử lý CORS/XSRF, có một bài đọc hay về điều này nếu bạn quan tâm https. //đường bão. com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ Rohan Deshpande Chỉ cần một lưu ý, khi tôi cố chạy `php artisan config. xuất bản tymon/jwt-auth` nó nói lệnh không tồn tại, tôi đã thử nhà cung cấp. xuất bản và nó đưa ra một ngoại lệ với nội dung "Quá nhiều đối số" không chắc tại sao điều này lại xảy ra, nhưng tôi vừa lấy mẫu tệp cấu hình từ repo và sau đó tạo khóa của mình Rohan Deshpande Chỉ cần một lưu ý, khi tôi cố chạy `php artisan config. xuất bản tymon/jwt-auth` nó nói lệnh không tồn tại, tôi đã thử nhà cung cấp. xuất bản và nó đưa ra một ngoại lệ với nội dung "Quá nhiều đối số" không chắc tại sao điều này lại xảy ra, nhưng tôi vừa lấy mẫu tệp cấu hình từ repo và sau đó tạo khóa của mình Rohan Deshpande Tôi cũng thắc mắc về phần mềm trung gian vì khi tôi kiểm tra các tệp, bên trong JWTAuthServiceProvider. php trong phương thức registerJWTAuthMiddleware(), nó dường như được gọi là tymon. jwt. xác thực. Tôi không chắc lắm, vì tôi nghĩ phần mềm trung gian phải được đăng ký trong app/Http/Kernel. php nhưng có lẽ có một số cách khác để làm điều đó và tôi đang thiếu thứ gì đó Rohan Deshpande Tôi cũng thắc mắc về phần mềm trung gian vì khi tôi kiểm tra các tệp, bên trong JWTAuthServiceProvider. php trong phương thức registerJWTAuthMiddleware(), nó dường như được gọi là tymon. jwt. xác thực. Tôi không chắc lắm, vì tôi nghĩ phần mềm trung gian phải được đăng ký trong app/Http/Kernel. php nhưng có lẽ có một số cách khác để làm điều đó và tôi đang thiếu thứ gì đó Badru Cám ơn vì đã chia sẻ Badru Cám ơn vì đã chia sẻ ♫☆ Alex Goretoy ☭ ☁ bài viết hay. Tôi đã sử dụng thư viện jwt này trong một dự án laravel hai tháng trước. Tôi không biết về laravel-cors. Thanks. Tại sao bạn không sử dụng bower? . Lệnh này dành cho Laravel 4. x, không phải 5. cấu hình thủ công x php. xuất bản tymon/jwt-auth trong phiên bản 5, sử dụng nhà cung cấp. xuất bản, như bạn đề cập sau trong bài viết ♫☆ Alex Goretoy ☭ ☁ bài viết hay. Tôi đã sử dụng thư viện jwt này trong một dự án laravel hai tháng trước. Tôi không biết về laravel-cors. Thanks. Tại sao bạn không sử dụng bower? . Lệnh này dành cho Laravel 4. x, không phải 5. cấu hình thủ công x php. xuất bản tymon/jwt-auth trong phiên bản 5, sử dụng nhà cung cấp. xuất bản, như bạn đề cập sau trong bài viết Jonathan Gravois Bài báo tuyệt vời. Rất kịp thời vì thực sự chưa có hướng dẫn Laravel 5/AngularJS JWT nào khác trên web. Tôi có trường hợp sử dụng hơi khác so với mẫu của bạn. Tôi muốn (cần) tách các ứng dụng để API Laravel 5 là một ứng dụng hoàn toàn riêng biệt với ứng dụng khách AngularJS. Lý do tôi cần điều này là vì tôi thực sự sẽ kết thúc với ứng dụng khách "Staff" (Angular), ứng dụng khách "Client" (Angular), ứng dụng di động "Client" (Ionic), tất cả sẽ sử dụng API của Laravel. Tôi đã đọc bài viết của bạn và sau đó tôi xem lại nó và làm theo và có thể tạo lại ví dụ của bạn. Bạn có thể chỉ cho tôi đi đúng hướng về những thay đổi mà tôi sẽ cần thực hiện để điều chỉnh ví dụ của bạn vào trường hợp sử dụng của tôi không. Tôi nghĩ rằng tôi sẽ cần tạo một phần định tuyến/đăng nhập của API và tạo trang đăng nhập trên máy khách nơi đăng nhập thành công sẽ nhận và lưu trữ cục bộ JWT nhưng tôi không chắc chắn cách thực hiện điều này Jonathan Gravois Bài báo tuyệt vời. Rất kịp thời vì thực sự chưa có hướng dẫn Laravel 5/AngularJS JWT nào khác trên web. Tôi có trường hợp sử dụng hơi khác so với mẫu của bạn. Tôi muốn (cần) tách các ứng dụng để API Laravel 5 là một ứng dụng hoàn toàn riêng biệt với ứng dụng khách AngularJS. Lý do tôi cần điều này là vì tôi thực sự sẽ kết thúc với ứng dụng khách "Staff" (Angular), ứng dụng khách "Client" (Angular), ứng dụng di động "Client" (Ionic), tất cả sẽ sử dụng API của Laravel. Tôi đã đọc bài viết của bạn và sau đó tôi xem lại nó và làm theo và có thể tạo lại ví dụ của bạn. Bạn có thể chỉ cho tôi đi đúng hướng về những thay đổi mà tôi sẽ cần thực hiện để điều chỉnh ví dụ của bạn vào trường hợp sử dụng của tôi không. Tôi nghĩ rằng tôi sẽ cần tạo một phần định tuyến/đăng nhập của API và tạo trang đăng nhập trên máy khách nơi đăng nhập thành công sẽ nhận và lưu trữ cục bộ JWT nhưng tôi không chắc chắn cách thực hiện điều này Khách Bài viết xuất sắc. Laravel 5 đã thay đổi phương thức xuất bản. Bây giờ nó là nhà cung cấp. xuất bản thay vì cấu hình. xuất bản, vì vậy cách chính xác là. nhà cung cấp thủ công php. xuất bản tymon/jwt-auth Một lần nữa, xin chúc mừng vì bài viết xuất sắc của bạn. ) Khách Bài viết xuất sắc. Laravel 5 đã thay đổi phương thức xuất bản. Bây giờ nó là nhà cung cấp. xuất bản thay vì cấu hình. xuất bản, vì vậy cách chính xác là. nhà cung cấp thủ công php. xuất bản tymon/jwt-auth Một lần nữa, xin chúc mừng vì bài viết xuất sắc của bạn. ) Paulo Coghi Bài viết xuất sắc. Laravel 5 đã thay đổi phương thức xuất bản. Bây giờ nó là nhà cung cấp. xuất bản thay vì cấu hình. xuất bản, vì vậy cách chính xác là. nhà cung cấp thủ công php. xuất bản (vâng, không có phần "tymon/jwt-auth") Một lần nữa, xin chúc mừng bài viết xuất sắc của bạn. ) Paulo Coghi Bài viết xuất sắc. Laravel 5 đã thay đổi phương thức xuất bản. Bây giờ nó là nhà cung cấp. xuất bản thay vì cấu hình. xuất bản, vì vậy cách chính xác là. nhà cung cấp thủ công php. xuất bản (vâng, không có phần "tymon/jwt-auth") Một lần nữa, xin chúc mừng bài viết xuất sắc của bạn. ) Karlo Smid Chào Tino. Tôi nghĩ rằng tuyên bố này là không đúng sự thật. """ Bảo vệ. Vì chúng tôi không sử dụng cookie nên chúng tôi không phải bảo vệ chống lại các cuộc tấn công giả mạo yêu cầu trên nhiều trang web (CSRF) """ Bạn có thể giải thích thêm về điều đó không? Vì không có cách nào để vô hiệu hóa mã thông báo JWT, nên mã thông báo JWT được tạo sẽ là . Vì thực tế đó, mọi phương thức POST/PUT phải được bảo vệ bằng bí mật CSRF Karlo Smid Chào Tino. Tôi nghĩ rằng tuyên bố này là không đúng sự thật. """ Bảo vệ. Vì chúng tôi không sử dụng cookie nên chúng tôi không phải bảo vệ chống lại các cuộc tấn công giả mạo yêu cầu trên nhiều trang web (CSRF) """ Bạn có thể giải thích thêm về điều đó không? Vì không có cách nào để vô hiệu hóa mã thông báo JWT, nên mã thông báo JWT được tạo sẽ là . Vì thực tế đó, mọi phương thức POST/PUT phải được bảo vệ bằng bí mật CSRF Sean Tymon Bạn nên tìm thêm một số thông tin trong bài đăng SO này - http. // stackoverflow. com/questions/21357182/csrf-token-necessary-when-using-stateless-sessionless-authentication JWT có thời hạn sử dụng nên chúng chỉ có hiệu lực miễn là bạn đặt chúng ở mức. Bạn có thể muốn biết rằng tôi đã triển khai một cách để "danh sách đen" mã thông báo bằng cách sử dụng gói được đề cập tại đây. Nó chỉ cần thêm mã thông báo "jti" vào redis, nơi mã thông báo này vẫn tồn tại cho đến khi mã thông báo hết hạn, tại thời điểm đó, mã thông báo sẽ tự động bị xóa Sean Tymon Bạn nên tìm thêm một số thông tin trong bài đăng SO này - http. // stackoverflow. com/questions/21357182/csrf-token-necessary-when-using-stateless-sessionless-authentication JWT có thời hạn sử dụng nên chúng chỉ có hiệu lực miễn là bạn đặt chúng ở mức. Bạn có thể muốn biết rằng tôi đã triển khai một cách để "danh sách đen" mã thông báo bằng cách sử dụng gói được đề cập tại đây. Nó chỉ cần thêm mã thông báo "jti" vào redis, nơi mã thông báo này vẫn tồn tại cho đến khi mã thông báo hết hạn, tại thời điểm đó, mã thông báo sẽ tự động bị xóa Miguel Tôi đã thử ví dụ nhưng tôi gặp lỗi "Không có tiêu đề 'Kiểm soát truy cập-Cho phép-Xuất xứ' trên tài nguyên được yêu cầu. Xuất xứ 'http. //máy chủ cục bộ. 8383' do đó không được phép truy cập. Phản hồi có mã trạng thái HTTP 403" Bây giờ bạn phải làm gì? vì ứng dụng của tôi không ở cùng một máy chủ. Cấu hình CORS của bạn hoạt động vì nó nằm trong cùng một máy chủ Miguel Tôi đã thử ví dụ nhưng tôi gặp lỗi "Không có tiêu đề 'Kiểm soát truy cập-Cho phép-Xuất xứ' trên tài nguyên được yêu cầu. Xuất xứ 'http. //máy chủ cục bộ. 8383' do đó không được phép truy cập. Phản hồi có mã trạng thái HTTP 403" Bây giờ bạn phải làm gì? vì ứng dụng của tôi không ở cùng một máy chủ. Cấu hình CORS của bạn hoạt động vì nó nằm trong cùng một máy chủ Neerav Cảm ơn Tino rất nhiều vì bài hướng dẫn rất hay, giải thích chi tiết các khái niệm. Tôi mới bắt đầu khám phá khả năng sử dụng angularjs với laravel 5. Trong khi xem qua nhiều bài viết về việc sử dụng góc cạnh cho người mới bắt đầu, tôi đã bắt gặp một quan điểm mạnh mẽ rằng "KHÔNG SỬ DỤNG JQUERY TRONG DỰ ÁN ANGULAR" và "THINK IN ANGULAR", nghĩa là hãy cố gắng tránh jquery càng lâu càng tốt trong khi phát triển với angularjs sẽ . Theo những ý kiến đó, có cách nào để không sử dụng jquery mà vẫn đạt được những gì bạn đã trình bày ở đây không? . Tôi sẽ thực sự đánh giá cao sự giúp đỡ của bạn trong việc hiểu những điều này Neerav Cảm ơn Tino rất nhiều vì bài hướng dẫn rất hay, giải thích chi tiết các khái niệm. Tôi mới bắt đầu khám phá khả năng sử dụng angularjs với laravel 5. Trong khi xem qua nhiều bài viết về việc sử dụng góc cạnh cho người mới bắt đầu, tôi đã bắt gặp một quan điểm mạnh mẽ rằng "KHÔNG SỬ DỤNG JQUERY TRONG DỰ ÁN ANGULAR" và "THINK IN ANGULAR", nghĩa là hãy cố gắng tránh jquery càng lâu càng tốt trong khi phát triển với angularjs sẽ . Theo những ý kiến đó, có cách nào để không sử dụng jquery mà vẫn đạt được những gì bạn đã trình bày ở đây không? . Tôi sẽ thực sự đánh giá cao sự giúp đỡ của bạn trong việc hiểu những điều này xe ngựa Nó không phải là không quốc tịch? . Nếu không có mã thông báo, bạn không được ủy quyền. Sau đó, lần tới khi họ xác thực, họ sẽ nhận được mã thông báo mới. Vì vậy, không sử dụng lại mã thông báo cũ xe ngựa Nó không phải là không quốc tịch? . Nếu không có mã thông báo, bạn không được ủy quyền. Sau đó, lần tới khi họ xác thực, họ sẽ nhận được mã thông báo mới. Vì vậy, không sử dụng lại mã thông báo cũ Ahmed Abdel Razzak Vâng nó nên. Nhưng bạn sẽ thu hồi mã thông báo hợp lệ bằng cách nào khác? Ahmed Abdel Razzak Vâng nó nên. Nhưng bạn sẽ thu hồi mã thông báo hợp lệ bằng cách nào khác? xe ngựa Điểm lấy ở đó. Nhiều thiết bị đặt ra nhiều suy nghĩ hơn xe ngựa Điểm lấy ở đó. Nhiều thiết bị đặt ra nhiều suy nghĩ hơn Ahmed Abdel Razzak Mặt khác. Tôi không nghĩ rằng giải pháp này là trạng thái. Và sửa cho tôi nếu tôi sai, Máy chủ không lưu bất kỳ "trạng thái" nào về người dùng. Và mã thông báo người dùng (dưới dạng tài nguyên) lưu thông tin về trạng thái của chính nó giống như bài đăng của người dùng. Nó thuộc về một người dùng và giống như một bài đăng của người dùng. Anh ấy có thể xóa nó. Tôi nghĩ về jwt giống như một "cái bắt tay" giữa yêu cầu nhận được và api. Không phải là một mã thông báo xác thực. Máy chủ phát hành nó và xác thực tính hợp lệ của nó (và quan trọng hơn là sự tồn tại của nó) với mỗi yêu cầu. Điều mà tôi không nghĩ (IMHO) làm mất hiệu lực nguyên tắc không trạng thái. Một lưu ý cuối cùng về kịch bản bạn đang mô tả. Từ những gì tôi hiểu. Bạn phản đối rằng nếu người dùng đã tạo (giả mạo) mã thông báo hợp lệ (không được tạo bởi api) thì yêu cầu phải được xác thực chính xác và hợp lệ. Nếu đó là chính xác, tôi cảm thấy rằng giải pháp không an toàn của nó. Mã thông báo mà API không tạo có hợp lệ không? Ahmed Abdel Razzak Mặt khác. Tôi không nghĩ rằng giải pháp này là trạng thái. Và sửa cho tôi nếu tôi sai, Máy chủ không lưu bất kỳ "trạng thái" nào về người dùng. Và mã thông báo người dùng (dưới dạng tài nguyên) lưu thông tin về trạng thái của chính nó giống như bài đăng của người dùng. Nó thuộc về một người dùng và giống như một bài đăng của người dùng. Anh ấy có thể xóa nó. Tôi nghĩ về jwt giống như một "cái bắt tay" giữa yêu cầu nhận được và api. Không phải là một mã thông báo xác thực. Máy chủ phát hành nó và xác thực tính hợp lệ của nó (và quan trọng hơn là sự tồn tại của nó) với mỗi yêu cầu. Điều mà tôi không nghĩ (IMHO) làm mất hiệu lực nguyên tắc không trạng thái. Một lưu ý cuối cùng về kịch bản bạn đang mô tả. Từ những gì tôi hiểu. Bạn phản đối rằng nếu người dùng đã tạo (giả mạo) mã thông báo hợp lệ (không được tạo bởi api) thì yêu cầu phải được xác thực chính xác và hợp lệ. Nếu đó là chính xác, tôi cảm thấy rằng giải pháp không an toàn của nó. Mã thông báo mà API không tạo có hợp lệ không? Ahmed Abdel Razzak Kiểm tra mô-đun góc này https. //github. com/sahat/satellizer Nó hoạt động với oauth và jwt. Kiểm tra các ví dụ (và cấu hình) sẽ cho bạn ý tưởng Ahmed Abdel Razzak Kiểm tra mô-đun góc này https. //github. com/sahat/satellizer Nó hoạt động với oauth và jwt. Kiểm tra các ví dụ (và cấu hình) sẽ cho bạn ý tưởng Ahmed Abdel Razzak Thật tệ là tôi không thích php. Và chắc chắn sẽ kiểm tra xem jwt-ruby có thực hiện các tính năng tương tự hay không Ahmed Abdel Razzak Thật tệ là tôi không thích php. Và chắc chắn sẽ kiểm tra xem jwt-ruby có thực hiện các tính năng tương tự hay không Florian Zemke Tôi đã xây dựng một dự án soạn sẵn dành cho người mới bắt đầu với tính năng xác thực dựa trên mã thông báo có Laravel 5 làm API RESTful phía sau và AngularJS ở phía trước. Đó là nền tảng tốt để xây dựng bất cứ thứ gì bạn thích với Laravel và AngularJS. Tôi hy vọng nó sẽ giúp một số bạn bắt đầu nhanh hơn. https. //github. com/Zemke/starter-laravel-angular/ Florian Zemke Tôi đã xây dựng một dự án soạn sẵn dành cho người mới bắt đầu với tính năng xác thực dựa trên mã thông báo có Laravel 5 làm API RESTful phía sau và AngularJS ở phía trước. Đó là nền tảng tốt để xây dựng bất cứ thứ gì bạn thích với Laravel và AngularJS. Tôi hy vọng nó sẽ giúp một số bạn bắt đầu nhanh hơn. https. //github. com/Zemke/starter-laravel-angular/ Florian Zemke Này, tôi đã xây dựng một dự án soạn sẵn dành cho người mới bắt đầu với xác thực dựa trên mã thông báo bằng cách sử dụng bộ nhớ cục bộ có Laravel 5 làm API RESTful phía sau và AngularJS ở phía trước. Đó là nền tảng tốt để xây dựng bất cứ thứ gì bạn thích với Laravel và AngularJS. Tôi hy vọng nó sẽ giúp một số bạn bắt đầu nhanh hơn. https. //github. com/Zemke/starter-laravel-angular/ Florian Zemke Này, tôi đã xây dựng một dự án soạn sẵn dành cho người mới bắt đầu với xác thực dựa trên mã thông báo bằng cách sử dụng bộ nhớ cục bộ có Laravel 5 làm API RESTful phía sau và AngularJS ở phía trước. Đó là nền tảng tốt để xây dựng bất cứ thứ gì bạn thích với Laravel và AngularJS. Tôi hy vọng nó sẽ giúp một số bạn bắt đầu nhanh hơn. https. //github. com/Zemke/starter-laravel-angular/ Porfirio Chavez Hãy để tôi hiểu điều này. bạn tạo BackEnd để tạo chế độ xem, để yêu cầu một API đang hoạt động trong cùng một BackEnd. Điều này đã được thử nghiệm trên thực tế ? . CORS và CSRF vì đăng bài khiến nó đau đầu, Porfirio Chavez Hãy để tôi hiểu điều này. bạn tạo BackEnd để tạo chế độ xem, để yêu cầu một API đang hoạt động trong cùng một BackEnd. Điều này đã được thử nghiệm trên thực tế ? . CORS và CSRF vì đăng bài khiến nó đau đầu, Andy Roddam bài viết tuyệt vời. Tôi chỉ tự hỏi, nếu tất cả xác thực của tôi hiện đang sử dụng mã thông báo JWT, điều này có nghĩa là chúng tôi không cần Laravel để tạo XSRF-TOKEN và laravel_session cho mỗi phản hồi cho giao diện người dùng? . ) Andy Roddam bài viết tuyệt vời. Tôi chỉ tự hỏi, nếu tất cả xác thực của tôi hiện đang sử dụng mã thông báo JWT, điều này có nghĩa là chúng tôi không cần Laravel để tạo XSRF-TOKEN và laravel_session cho mỗi phản hồi cho giao diện người dùng? . ) Realeyez Cảm ơn vì bài viết rất chi tiết về một trong những loại khoai tây hot nhất trong những năm sắp tới. ;) Mặc dù có một điều trong tâm trí tôi (trong số nhiều lo ngại của tôi khi sử dụng phương pháp này), bộ nhớ cục bộ có thực sự an toàn không? . Mã thông báo này về cơ bản không giống như để chìa khóa nhà bạn dưới thảm và hy vọng không ai bận tâm kiểm tra nó ở dưới đó? Realeyez Cảm ơn vì bài viết rất chi tiết về một trong những loại khoai tây hot nhất trong những năm sắp tới. ;) Mặc dù có một điều trong tâm trí tôi (trong số nhiều lo ngại của tôi khi sử dụng phương pháp này), bộ nhớ cục bộ có thực sự an toàn không? . Mã thông báo này về cơ bản không giống như để chìa khóa nhà bạn dưới thảm và hy vọng không ai bận tâm kiểm tra nó ở dưới đó? Johaness nó quá phức tạp để sử dụng thực tế. thử tốt Johaness nó quá phức tạp để sử dụng thực tế. thử tốt Stivenson Rincón Mora Chắc chắn. Không có công việc cho tôi. Cors nó là một vấn đề. Trong. /app/Http/Middleware/Cors. php Tôi có $response = $next($request); . php đã bảo vệ $middleware = [ 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 'Illuminate\Cookie\Middleware\EncryptCookies', 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 'Illuminate\Session\Middleware\StartSession', ' . get('/prueba', ['before' => 'jwt-auth', function () { //$token = JWTAuth. Nhận được mã thông báo(); . toUser($token); Stivenson Rincón Mora Chắc chắn. Không có công việc cho tôi. Cors nó là một vấn đề. Trong. /app/Http/Middleware/Cors. php Tôi có $response = $next($request); . php đã bảo vệ $middleware = [ 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 'Illuminate\Cookie\Middleware\EncryptCookies', 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 'Illuminate\Session\Middleware\StartSession', ' . get('/prueba', ['before' => 'jwt-auth', function () { //$token = JWTAuth. Nhận được mã thông báo(); . toUser($token); Stivenson Rincón Mora Và tôi có ba ngày trong này. Điều gì đang xảy ra? Stivenson Rincón Mora Và tôi có ba ngày trong này. Điều gì đang xảy ra? César Fernandes Bài báo tuyệt vời. Một điều nữa thôi. Tôi đã tải xuống mã của bạn và nó đang chạy ở đây gần như ổn 100%. Điểm duy nhất tôi nghi ngờ là kiểm tra. Tôi phải nhấp 3 lần trở lên để lấy nó từ khu vực hạn chế. nó giống như mã thông báo vẫn tồn tại sau lần nhấp đầu tiên. Bạn có bất cứ ý tưởng về những gì có thể gây ra điều này? César Fernandes Bài báo tuyệt vời. Một điều nữa thôi. Tôi đã tải xuống mã của bạn và nó đang chạy ở đây gần như ổn 100%. Điểm duy nhất tôi nghi ngờ là kiểm tra. Tôi phải nhấp 3 lần trở lên để lấy nó từ khu vực hạn chế. nó giống như mã thông báo vẫn tồn tại sau lần nhấp đầu tiên. Bạn có bất cứ ý tưởng về những gì có thể gây ra điều này? César Fernandes Chỉ cho bạn biêt thôi. có vấn đề với ngStorage trong dự án github. tôi đã thay thế nó bằng phiên bản này https. //github. com/raynode/ngStorage/blob/master/ngStorage. 27. js và bây giờ nó ổn César Fernandes Chỉ cho bạn biêt thôi. có vấn đề với ngStorage trong dự án github. tôi đã thay thế nó bằng phiên bản này https. //github. com/raynode/ngStorage/blob/master/ngStorage. 27. js và bây giờ nó ổn Giovanni Bài đăng hay. Tại env cục bộ của tôi, tôi gặp lỗi "Không thể phân tích cú pháp mã thông báo từ yêu cầu" và tôi không biết mình có thể làm gì Giovanni Bài đăng hay. Tại env cục bộ của tôi, tôi gặp lỗi "Không thể phân tích cú pháp mã thông báo từ yêu cầu" và tôi không biết mình có thể làm gì Giovanni Xin lỗi noob của tôi, bài đăng này giải quyết vấn đề của tôi. http. // stackoverflow. com/câu hỏi/20853604/laravel-get-request-headers Giovanni Xin lỗi noob của tôi, bài đăng này giải quyết vấn đề của tôi. http. // stackoverflow. com/câu hỏi/20853604/laravel-get-request-headers Sami Tôi thứ hai rằng, có ai biết hướng dẫn/ví dụ về bộ lưu trữ phía máy khách JWT an toàn, sẵn sàng sản xuất không? Sami Tôi thứ hai rằng, có ai biết hướng dẫn/ví dụ về bộ lưu trữ phía máy khách JWT an toàn, sẵn sàng sản xuất không? Matheus Schettino Tino, phải nói là 10 ngày qua mình nghiên cứu về jwt token mà chưa thấy bài nào như của bạn. Đó là một tâm trí to lớn thổi bay và giảm bớt rất nhiều sự phức tạp trong tâm trí tôi. Cảm ơn rất nhiều. Chỉ có một vài điều tôi muốn biết rõ hơn. 1) API tôi đang làm việc chấp nhận CORS. Nhưng không có hạn chế. Thêm laravel cors bạn đang sử dụng này, liệu tôi có thể hạn chế các tên miền mà tôi muốn cấp quyền truy cập không? . Làm thế nào tôi có thể kết hợp tất cả những thứ đó lại với nhau, bạn đề xuất phương pháp nào? . Hy vọng bạn nhìn thấy tin nhắn của tôi Matheus Schettino Tino, phải nói là 10 ngày qua mình nghiên cứu về jwt token mà chưa thấy bài nào như của bạn. Đó là một tâm trí to lớn thổi bay và giảm bớt rất nhiều sự phức tạp trong tâm trí tôi. Cảm ơn rất nhiều. Chỉ có một vài điều tôi muốn biết rõ hơn. 1) API tôi đang làm việc chấp nhận CORS. Nhưng không có hạn chế. Thêm laravel cors bạn đang sử dụng này, liệu tôi có thể hạn chế các tên miền mà tôi muốn cấp quyền truy cập không? . Làm thế nào tôi có thể kết hợp tất cả những thứ đó lại với nhau, bạn đề xuất phương pháp nào? . Hy vọng bạn nhìn thấy tin nhắn của tôi Đánh dấu Bucknell Làm mới mã thông báo thì sao? Đánh dấu Bucknell Làm mới mã thông báo thì sao? SamMonk Đối với laravel 5 bạn sẽ sử dụng. nhà cung cấp thủ công php. xuất bản --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" SamMonk Đối với laravel 5 bạn sẽ sử dụng. nhà cung cấp thủ công php. xuất bản --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" Moin Ahmed Có một vấn đề về khả năng tương tác của việc thực hiện này với khác. Trong tệp Namshi/JOSE/Signer/HMAC. php dòng 15 nên được thay thế bằng dòng sau để làm cho nó tương thích trên tất cả các triển khai của JWT. trả về hash_hmac($this->getHashingAlgorithm(), $input, $key, true); Moin Ahmed Có một vấn đề về khả năng tương tác của việc thực hiện này với khác. Trong tệp Namshi/JOSE/Signer/HMAC. php dòng 15 nên được thay thế bằng dòng sau để làm cho nó tương thích trên tất cả các triển khai của JWT. trả về hash_hmac($this->getHashingAlgorithm(), $input, $key, true); Sean Tymon Điều này đã được sửa vài tuần trước, xem - https. //github. com/tymondesigns/jwt-auth/pull/126 Sean Tymon Điều này đã được sửa vài tuần trước, xem - https. //github. com/tymondesigns/jwt-auth/pull/126 Moin Ahmed Tôi đã cài đặt 0. 5. 3 vài ngày trở lại và nó vẫn có vấn đề; Moin Ahmed Tôi đã cài đặt 0. 5. 3 vài ngày trở lại và nó vẫn có vấn đề; Moin Ahmed Làm thế nào chúng ta có thể sử dụng nó để có được JWE? Moin Ahmed Làm thế nào chúng ta có thể sử dụng nó để có được JWE? Sean Tymon vâng bạn nói đúng, nó đã được kéo dài trên chủ. 0. 5. 4 sẽ khắc phục Sean Tymon vâng bạn nói đúng, nó đã được kéo dài trên chủ. 0. 5. 4 sẽ khắc phục Zakaria Dbani Cảm ơn Tino rất nhiều vì hướng dẫn tuyệt vời, tất cả đều hoạt động như một bùa mê. sau đó, khi tôi muốn sử dụng (ionic), tôi nghĩ rằng thiết bị chặn không làm gì tôi nhận được. mã trạng thái. 403 bị cấm. Ai đó làm ơn giúp tôi với. ) Zakaria Dbani Cảm ơn Tino rất nhiều vì hướng dẫn tuyệt vời, tất cả đều hoạt động như một bùa mê. sau đó, khi tôi muốn sử dụng (ionic), tôi nghĩ rằng thiết bị chặn không làm gì tôi nhận được. mã trạng thái. 403 bị cấm. Ai đó làm ơn giúp tôi với. ) Konstantin Mỗi lần đăng nhập, tôi nhận được mã thông báo JWT mới, tuy nhiên, chức năng nói chuyện cũ của tôi vẫn hoạt động khi tôi gửi yêu cầu. Có cách nào dễ dàng để đăng xuất JWT mà không cần lưu trữ nó trong bảng người dùng không? Konstantin Mỗi lần đăng nhập, tôi nhận được mã thông báo JWT mới, tuy nhiên, chức năng nói chuyện cũ của tôi vẫn hoạt động khi tôi gửi yêu cầu. Có cách nào dễ dàng để đăng xuất JWT mà không cần lưu trữ nó trong bảng người dùng không? Bernardino Guerrero Xin chào, tôi đã triển khai proyect của mình (RESTful API) sử dụng JWT, trong một giọt đại dương kỹ thuật số, nhưng tôi gặp lỗi. "Không tìm thấy cột. 1054 Cột 'query_string' không xác định trong 'mệnh đề where'" khi tôi cố gắng gọi điểm cuối signIn. signUp hoạt động tốt và tôi có thể truy xuất mã thông báo. Doplet là một LEMP, bất kỳ trợ giúp nào. cảm ơn Bernardino Guerrero Xin chào, tôi đã triển khai proyect của mình (RESTful API) sử dụng JWT, trong một giọt đại dương kỹ thuật số, nhưng tôi gặp lỗi. "Không tìm thấy cột. 1054 Cột 'query_string' không xác định trong 'mệnh đề where'" khi tôi cố gắng gọi điểm cuối signIn. signUp hoạt động tốt và tôi có thể truy xuất mã thông báo. Doplet là một LEMP, bất kỳ trợ giúp nào. cảm ơn zlz tôi đang gặp lỗi 500 máy chủ nội bộ khi truy cập vào khu vực hạn chế. JWTException. mã thông báo là bắt buộc. như tôi đã hiểu, mã thông báo được gửi trong tiêu đề được yêu cầu. làm ơn giúp gì được không? zlz tôi đang gặp lỗi 500 máy chủ nội bộ khi truy cập vào khu vực hạn chế. JWTException. mã thông báo là bắt buộc. như tôi đã hiểu, mã thông báo được gửi trong tiêu đề được yêu cầu. làm ơn giúp gì được không? ljiang510 Thật khó khăn cho một ứng dụng gốc sử dụng xác thực dựa trên phiên. Bạn phải yêu cầu người dùng đăng nhập mỗi khi họ muốn sử dụng ứng dụng của bạn ljiang510 Thật khó khăn cho một ứng dụng gốc sử dụng xác thực dựa trên phiên. Bạn phải yêu cầu người dùng đăng nhập mỗi khi họ muốn sử dụng ứng dụng của bạn Neri Junior Sử dụng tuyến nghệ nhân php. danh sách tôi nhận được "Mã thông báo không thể được phân tích cú pháp từ yêu cầu" Tôi đang làm gì đó sai? Neri Junior Sử dụng tuyến nghệ nhân php. danh sách tôi nhận được "Mã thông báo không thể được phân tích cú pháp từ yêu cầu" Tôi đang làm gì đó sai? Moin Ahmed Tôi muốn đưa một vài yêu cầu tùy chỉnh vào jwt của mình, vui lòng giới thiệu cho tôi các tùy chọn Moin Ahmed Tôi muốn đưa một vài yêu cầu tùy chỉnh vào jwt của mình, vui lòng giới thiệu cho tôi các tùy chọn Moin Ahmed Đừng bận tâm. tôi tự tìm ra. Bạn đã làm rất tốt Moin Ahmed Đừng bận tâm. tôi tự tìm ra. Bạn đã làm rất tốt Moin Ahmed Bất kỳ cập nhật về điều này? Moin Ahmed Bất kỳ cập nhật về điều này? Peciorin Chúc mừng bài viết. Các bạn có thể xem tại đây (http. // stackoverflow. com/questions/32163724/angularjs-and-slim-framework-jwt-authentication-and-token-refresh-flow) và cho biết liệu có vấn đề gì xảy ra với luồng xác thực của tôi không? Peciorin Chúc mừng bài viết. Các bạn có thể xem tại đây (http. // stackoverflow. com/questions/32163724/angularjs-and-slim-framework-jwt-authentication-and-token-refresh-flow) và cho biết liệu có vấn đề gì xảy ra với luồng xác thực của tôi không? Emoh Nó hoạt động tốt khi máy khách được lưu trữ trên cùng một tên miền. Nhưng khi được lưu trữ trên tên miền khác, nó sẽ báo lỗi sau. XMLHttpRequest không thể tải http. //thí dụ. com/api. Tiêu đề 'Kiểm soát truy cập-Cho phép-Xuất xứ' chứa nhiều giá trị 'http. //localhost, *', nhưng chỉ cho phép một cái. Xuất xứ 'http. Do đó, // localhost' không phải là Cách khắc phục sự cố này được lưu trữ trên IIS 8. Thông tin chi tiết. https. //github. com/barryvdh/laravel-cors/issues/63 Vấn đề tương tự được giải thích tại đây. http. //www. ngroutes. com/câu hỏi/AUy0YjmHJGEimGEpEt7Z/how-do-i-erase-one-access-control-allow-origin-from-my-headers-in-laravel-4. html http. // stackoverflow. com/câu hỏi/28596694/how-do-i-erase-one-access-control-allow-origin-from-my-headers-in-laravel-4 Emoh Nó hoạt động tốt khi máy khách được lưu trữ trên cùng một tên miền. Nhưng khi được lưu trữ trên tên miền khác, nó sẽ báo lỗi sau. XMLHttpRequest không thể tải http. //thí dụ. com/api. Tiêu đề 'Kiểm soát truy cập-Cho phép-Xuất xứ' chứa nhiều giá trị 'http. //localhost, *', nhưng chỉ cho phép một cái. Xuất xứ 'http. Do đó, // localhost' không phải là Cách khắc phục sự cố này được lưu trữ trên IIS 8. Thông tin chi tiết. https. //github. com/barryvdh/laravel-cors/issues/63 Vấn đề tương tự được giải thích tại đây. http. //www. ngroutes. com/câu hỏi/AUy0YjmHJGEimGEpEt7Z/how-do-i-erase-one-access-control-allow-origin-from-my-headers-in-laravel-4. html http. // stackoverflow. com/câu hỏi/28596694/how-do-i-erase-one-access-control-allow-origin-from-my-headers-in-laravel-4 răng cưa Tôi xem qua video này giải thích những điều cơ bản về JWT tại đây. https. //www. youtube. com/watch?v=oXxbB5kv9OA răng cưa Tôi xem qua video này giải thích những điều cơ bản về JWT tại đây. https. //www. youtube. com/watch?v=oXxbB5kv9OA Omar Jebari Mã ví dụ bạn đưa ra còn thiếu khá nhiều thứ. Đi đến bản demo đã giúp lấy được tất cả mã giao diện người dùng. Ngoài ra, rất quan trọng, sau khi được xác thực, tôi không thể làm cho /restricted route hoạt động cho đến khi tôi thêm phần sau vào. htaccess, vì tiêu đề Ủy quyền đã bị loại bỏ (có lẽ là do apache). RewriteRule ^ - [E=HTTP_AUTHORIZATION. %{HTTP. Ủy quyền}] Omar Jebari Mã ví dụ bạn đưa ra còn thiếu khá nhiều thứ. Đi đến bản demo đã giúp lấy được tất cả mã giao diện người dùng. Ngoài ra, rất quan trọng, sau khi được xác thực, tôi không thể làm cho /restricted route hoạt động cho đến khi tôi thêm phần sau vào. htaccess, vì tiêu đề Ủy quyền đã bị loại bỏ (có lẽ là do apache). RewriteRule ^ - [E=HTTP_AUTHORIZATION. %{HTTP. Ủy quyền}] Aaron Xám mảnh rất đẹp. Tôi muốn chỉ ra rằng việc lưu trữ mã thông báo trong localStorage hoặc sessionStorage dễ bị tấn công XSS và dữ liệu có thể được xem bằng tập lệnh trên trang - vì vậy nếu bạn có tập lệnh bị xâm nhập được cung cấp từ CDN hoặc nếu có mã độc trong một . Đọc thêm tại đây. https. //đường bão. com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ Tôi nghĩ một cách tiếp cận an toàn hơn sẽ là lưu trữ mã thông báo JWT + CSRF trong cookie, sau đó đặt JWT đã tính toán của bạn với Aaron Xám mảnh rất đẹp. Tôi muốn chỉ ra rằng việc lưu trữ mã thông báo trong localStorage hoặc sessionStorage dễ bị tấn công XSS và dữ liệu có thể được xem bằng tập lệnh trên trang - vì vậy nếu bạn có tập lệnh bị xâm nhập được cung cấp từ CDN hoặc nếu có mã độc trong một . Đọc thêm tại đây. https. //đường bão. com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/ Tôi nghĩ một cách tiếp cận an toàn hơn sẽ là lưu trữ mã thông báo JWT + CSRF trong cookie, sau đó đặt JWT đã tính toán của bạn với Roberto Cárdenas Xin chào, tôi đang làm việc với Doctrine nên người dùng mô hình của tôi không phải là mô hình Eloquent. Tôi có cần chuyển mô hình của mình sang mô hình Eloquent hay có cách nào để sử dụng mô hình học thuyết của tôi với JWT không? Roberto Cárdenas Xin chào, tôi đang làm việc với Doctrine nên người dùng mô hình của tôi không phải là mô hình Eloquent. Tôi có cần chuyển mô hình của mình sang mô hình Eloquent hay có cách nào để sử dụng mô hình học thuyết của tôi với JWT không? Saqueib Nó tốt cho SPA nhưng phần API tôi không chắc cách quản lý mã thông báo hết hạn trên ứng dụng dành cho thiết bị di động. Trường hợp chúng tôi chỉ yêu cầu người dùng đăng nhập một lần khi khởi chạy ứng dụng lần đầu tiên. Nếu người dùng mở lại ứng dụng di động đủ lâu, mã thông báo sẽ hết hạn và họ sẽ được yêu cầu đăng nhập lại. Làm thế nào chúng ta có thể giải quyết vấn đề này, thật không tốt khi yêu cầu người dùng đăng nhập lại. Mọi người có suy nghĩ gì không Saqueib Nó tốt cho SPA nhưng phần API tôi không chắc cách quản lý mã thông báo hết hạn trên ứng dụng dành cho thiết bị di động. Trường hợp chúng tôi chỉ yêu cầu người dùng đăng nhập một lần khi khởi chạy ứng dụng lần đầu tiên. Nếu người dùng mở lại ứng dụng di động đủ lâu, mã thông báo sẽ hết hạn và họ sẽ được yêu cầu đăng nhập lại. Làm thế nào chúng ta có thể giải quyết vấn đề này, thật không tốt khi yêu cầu người dùng đăng nhập lại. Mọi người có suy nghĩ gì không biệt danh Tôi đang cố gắng thực hiện các bước của bạn nhưng cho dù tôi có cố gắng bao nhiêu thì tôi vẫn nhận được. [Symfony\Component\Debug\Exception\FatalErrorException] Không tìm thấy lớp 'Barryvdh\Cors\CorsServiceProvider' Tôi đang sử dụng Laravel 5 biệt danh Tôi đang cố gắng thực hiện các bước của bạn nhưng cho dù tôi có cố gắng bao nhiêu thì tôi vẫn nhận được. [Symfony\Component\Debug\Exception\FatalErrorException] Không tìm thấy lớp 'Barryvdh\Cors\CorsServiceProvider' Tôi đang sử dụng Laravel 5 Mike Có ai có bất kỳ gợi ý nào về ủy quyền cấp ứng dụng khách không? . Quan trọng hơn, nếu mã thông báo truy cập của ai đó bị xâm phạm, bên thứ ba có thể sử dụng mã đó để truy cập dữ liệu người dùng và có khả năng làm mới mã thông báo để khóa hoàn toàn người dùng thực. Điều này có thể tránh được nếu chúng tôi có thể chứng minh rằng mã thông báo đang được gửi bởi ứng dụng khách được ủy quyền nhưng làm cách nào chúng tôi có thể thực hiện điều đó nếu không có khóa bí mật? Mike Có ai có bất kỳ gợi ý nào về ủy quyền cấp ứng dụng khách không? . Quan trọng hơn, nếu mã thông báo truy cập của ai đó bị xâm phạm, bên thứ ba có thể sử dụng mã đó để truy cập dữ liệu người dùng và có khả năng làm mới mã thông báo để khóa hoàn toàn người dùng thực. Điều này có thể tránh được nếu chúng tôi có thể chứng minh rằng mã thông báo đang được gửi bởi ứng dụng khách được ủy quyền nhưng làm cách nào chúng tôi có thể thực hiện điều đó nếu không có khóa bí mật? Chris Tôi cũng muốn thêm vào điều này. Nếu tôi có hệ thống quản lý người dùng và người dùng đã đăng nhập và nhận lại mã thông báo, điều gì sẽ ngăn người dùng thực hiện giải mã base64 trên tải trọng, sau đó thao tác dữ liệu, mã hóa và sử dụng mã thông báo mới? Chris Tôi cũng muốn thêm vào điều này. Nếu tôi có hệ thống quản lý người dùng và người dùng đã đăng nhập và nhận lại mã thông báo, điều gì sẽ ngăn người dùng thực hiện giải mã base64 trên tải trọng, sau đó thao tác dữ liệu, mã hóa và sử dụng mã thông báo mới? Mike Trong trường hợp này, việc xác thực chữ ký sẽ không thành công nên bạn sẽ ổn thôi. Điều tôi không hiểu là làm thế nào để ngăn chặn bất kỳ người pha trò nào nhận được mã thông báo ngay từ đầu Mike Trong trường hợp này, việc xác thực chữ ký sẽ không thành công nên bạn sẽ ổn thôi. Điều tôi không hiểu là làm thế nào để ngăn chặn bất kỳ người pha trò nào nhận được mã thông báo ngay từ đầu Lasha Kakhidze bài đăng tuyệt vời, cảm ơn Lasha Kakhidze bài đăng tuyệt vời, cảm ơn Pavel Khi đăng ký người dùng, bạn nên băm mật khẩu, nếu không đăng nhập sẽ không hoạt động, tôi đã dành hàng giờ để tìm lý do tại sao việc xác thực không thành công Pavel Khi đăng ký người dùng, bạn nên băm mật khẩu, nếu không đăng nhập sẽ không hoạt động, tôi đã dành hàng giờ để tìm lý do tại sao việc xác thực không thành công DJ Điều gì sẽ xảy ra nếu ai đó chặn thông tin đăng nhập, người dùng và mật khẩu? DJ Điều gì sẽ xảy ra nếu ai đó chặn thông tin đăng nhập, người dùng và mật khẩu? Keyner TYC Không có công việc cho tôi. Tôi đã thêm RewriteEngine vào RewriteCond %{HTTP. Ủy quyền} ^(. *) Quy tắc viết lại. * - [e=HTTP_AUTHORIZATION. %1] Và không có việc gì. Tôi đang sử dụng Laravel 5. 0 , hãy giúp tôi. Thanks Keyner TYC Không có công việc cho tôi. Tôi đã thêm RewriteEngine vào RewriteCond %{HTTP. Ủy quyền} ^(. *) Quy tắc viết lại. * - [e=HTTP_AUTHORIZATION. %1] Và không có việc gì. Tôi đang sử dụng Laravel 5. 0 , hãy giúp tôi. Thanks MURATSPLAT Bài báo tuyệt vời, cảm ơn MURATSPLAT Bài báo tuyệt vời, cảm ơn Vivek Soni bạn cần gửi "Ủy quyền" -> "Người mang YOUR_TOKEN_HERE" làm cặp giá trị khóa trong tiêu đề Vivek Soni bạn cần gửi "Ủy quyền" -> "Người mang YOUR_TOKEN_HERE" làm cặp giá trị khóa trong tiêu đề Deric Lima Cảm ơn bạn đã nhận xét Omar, tôi đã dành hàng giờ cố gắng tìm ra vấn đề mà tôi gặp phải. Bởi vì tôi đã cố gửi mã thông báo qua Tiêu đề ủy quyền nhưng Laravel không đọc mã thông báo. Tôi đã đặt quy tắc này vào. htaccess và giải quyết. Cảm ơn nhiều// Deric Lima Cảm ơn bạn đã nhận xét Omar, tôi đã dành hàng giờ cố gắng tìm ra vấn đề mà tôi gặp phải. Bởi vì tôi đã cố gửi mã thông báo qua Tiêu đề ủy quyền nhưng Laravel không đọc mã thông báo. Tôi đã đặt quy tắc này vào. htaccess và giải quyết. Cảm ơn nhiều// Barbaros Kurt imho, khi người dùng đăng xuất, bạn đặt mã thông báo vào máy chủ redis dưới dạng danh sách đen và khi xác thực bằng cùng một mã thông báo ở phía máy chủ, trước tiên bạn kiểm tra xem nó có nằm trong danh sách đen hay không. nếu danh sách đen gửi 401 khác không có vấn đề gì. nếu người dùng bị mất mã thông báo buộc phải đăng xuất thì mã thông báo sẽ nằm trong danh sách đen (nếu bạn lưu trữ chúng trong db) Barbaros Kurt imho, khi người dùng đăng xuất, bạn đặt mã thông báo vào máy chủ redis dưới dạng danh sách đen và khi xác thực bằng cùng một mã thông báo ở phía máy chủ, trước tiên bạn kiểm tra xem nó có nằm trong danh sách đen hay không. nếu danh sách đen gửi 401 khác không có vấn đề gì. nếu người dùng bị mất mã thông báo buộc phải đăng xuất thì mã thông báo sẽ nằm trong danh sách đen (nếu bạn lưu trữ chúng trong db) Bruno Santana Xin chào, tôi đang gặp vấn đề tương tự. Tôi đang cố gắng sử dụng phiên bản mới nhất của laravel-cors (phiên bản 7 hoặc đại loại như thế này) Bruno Santana Xin chào, tôi đang gặp vấn đề tương tự. Tôi đang cố gắng sử dụng phiên bản mới nhất của laravel-cors (phiên bản 7 hoặc đại loại như thế này) Bruno Santana tôi nghĩ rằng tôi đã làm nó. thay vì nhà soạn nhạc yêu cầu barryvdh/laravel-cors 0. 4. x@dev, sử dụng trình soạn thảo yêu cầu barryvdh/laravel-cors 0. 7. x (phiên bản hiện tại khi tôi viết nhận xét này); . php, hãy sử dụng Barryvdh\Cors\ServiceProvider thay vì hướng dẫn, trong Kernel. php, hãy sử dụng \Barryvdh\Cors\HandleCors mà không có "phần mềm trung gian" Bruno Santana tôi nghĩ rằng tôi đã làm nó. thay vì nhà soạn nhạc yêu cầu barryvdh/laravel-cors 0. 4. x@dev, sử dụng trình soạn thảo yêu cầu barryvdh/laravel-cors 0. 7. x (phiên bản hiện tại khi tôi viết nhận xét này); . php, hãy sử dụng Barryvdh\Cors\ServiceProvider thay vì hướng dẫn, trong Kernel. php, hãy sử dụng \Barryvdh\Cors\HandleCors mà không có "phần mềm trung gian" Greg Tôi không chắc mình hiểu phần chữ ký. Để HMAC bạn cần một chìa khóa. Bởi vì bạn đã nói rằng "khóa bí mật của chữ ký do máy chủ nắm giữ", tôi có xu hướng cho rằng chúng tôi có khóa chung, điều này là sai, vì HMAC không phải là khóa công khai mà là khóa chung. Vì vậy, đó là cùng một khóa mà máy chủ biết và máy khách cần biết. Nếu máy khách là một SPA trong PHP, thì khóa (bất kỳ chuỗi nào) sẽ không hiển thị, điều này thuận tiện. Nếu tất cả ứng dụng khách được mã hóa bằng JavaScript, điều gì sẽ xảy ra với khóa? . Bí mật được chia sẻ là một thuật toán được chia sẻ tạo ra thứ chỉ có thể là chuỗi được chia sẻ được tạo. Tôi thấy không có ích gì khi làm điều đó khi bí mật được chia sẻ là "ẩn". Tại thời điểm này, người ta có thể chỉ cần đặt session_id làm bí mật chung (được đề xuất bởi một số người) Greg Tôi không chắc mình hiểu phần chữ ký. Để HMAC bạn cần một chìa khóa. Bởi vì bạn đã nói rằng "khóa bí mật của chữ ký do máy chủ nắm giữ", tôi có xu hướng cho rằng chúng tôi có khóa chung, điều này là sai, vì HMAC không phải là khóa công khai mà là khóa chung. Vì vậy, đó là cùng một khóa mà máy chủ biết và máy khách cần biết. Nếu máy khách là một SPA trong PHP, thì khóa (bất kỳ chuỗi nào) sẽ không hiển thị, điều này thuận tiện. Nếu tất cả ứng dụng khách được mã hóa bằng JavaScript, điều gì sẽ xảy ra với khóa? . Bí mật được chia sẻ là một thuật toán được chia sẻ tạo ra thứ chỉ có thể là chuỗi được chia sẻ được tạo. Tôi thấy không có ích gì khi làm điều đó khi bí mật được chia sẻ là "ẩn". Tại thời điểm này, người ta có thể chỉ cần đặt session_id làm bí mật chung (được đề xuất bởi một số người) Ka Yuk LEE JWT được tạo bởi máy chủ xác thực và khóa bí mật chữ ký được chia sẻ giữa các máy chủ API. JWT được cho là không rõ ràng đối với khách hàng Ka Yuk LEE JWT được tạo bởi máy chủ xác thực và khóa bí mật chữ ký được chia sẻ giữa các máy chủ API. JWT được cho là không rõ ràng đối với khách hàng mlops Kinh ngạc. cảm ơn. Tôi đã suy nghĩ về cách gửi một số id tới trình duyệt (di động) qua phiên hoặc cookie (điều gì là tốt nhất?) và cùng một bản ghi id trong cơ sở dữ liệu. Khi người dùng nhập kiểm tra id nếu nó giống nhau trong db hiển thị giỏ hàng nếu không thì về nhà. Tất cả điều này mà không cần đăng nhập mẫu. Ngay khi nhập vào trang web mlops Kinh ngạc. cảm ơn. Tôi đã suy nghĩ về cách gửi một số id tới trình duyệt (di động) qua phiên hoặc cookie (điều gì là tốt nhất?) và cùng một bản ghi id trong cơ sở dữ liệu. Khi người dùng nhập kiểm tra id nếu nó giống nhau trong db hiển thị giỏ hàng nếu không thì về nhà. Tất cả điều này mà không cần đăng nhập mẫu. Ngay khi nhập vào trang web Khan mỏng khi đăng ký và sau khi thành công thay vì trả lại mã thông báo trong JSON, nó chuyển hướng tôi đến / Khan mỏng khi đăng ký và sau khi thành công thay vì trả lại mã thông báo trong JSON, nó chuyển hướng tôi đến / Gopal G Đọc mô tả trên github, nó nói - "Ứng dụng này không được sử dụng trong môi trường Sản xuất. Đó là một ví dụ rất cơ bản, thiếu bất kỳ loại xác thực đầu vào nào, xử lý mã thông báo đã hết hạn, dự phòng bộ nhớ cục bộ thành cookie hoặc bất kỳ bộ nhớ nào khác. " Điều này có thể hữu ích - https. //đường bão. com/blog/build-secure-user-interfaces-using-jwts/ Gopal G Đọc mô tả trên github, nó nói - "Ứng dụng này không được sử dụng trong môi trường Sản xuất. Đó là một ví dụ rất cơ bản, thiếu bất kỳ loại xác thực đầu vào nào, xử lý mã thông báo đã hết hạn, dự phòng bộ nhớ cục bộ thành cookie hoặc bất kỳ bộ nhớ nào khác. " Điều này có thể hữu ích - https. //đường bão. com/blog/build-secure-user-interfaces-using-jwts/ Tiago Matos Mẹo hay như vậy. Bạn có thể cung cấp thêm?. D Tôi đang sử dụng Laravel để sử dụng API từ một máy chủ khác. API này sử dụng JWT. Ứng dụng của tôi sử dụng Laravel + Guzzle để thực hiện yêu cầu http. Tôi có thể đưa ra yêu cầu và nhận JWT từ API. Sau đó, tôi cũng có thể đưa ra bất kỳ yêu cầu nào để lấy bất kỳ dữ liệu nào từ API. Tất cả đều tốt cho đến nay. Tuy nhiên, làm cách nào tôi có thể cấp cho người dùng quyền truy cập vào khu vực hạn chế? . Có thể không? Tiago Matos Mẹo hay như vậy. Bạn có thể cung cấp thêm?. D Tôi đang sử dụng Laravel để sử dụng API từ một máy chủ khác. API này sử dụng JWT. Ứng dụng của tôi sử dụng Laravel + Guzzle để thực hiện yêu cầu http. Tôi có thể đưa ra yêu cầu và nhận JWT từ API. Sau đó, tôi cũng có thể đưa ra bất kỳ yêu cầu nào để lấy bất kỳ dữ liệu nào từ API. Tất cả đều tốt cho đến nay. Tuy nhiên, làm cách nào tôi có thể cấp cho người dùng quyền truy cập vào khu vực hạn chế? . Có thể không? Andy Tôi đã triển khai đầy đủ một giải pháp tương tự như bài viết bằng cách sử dụng mã thông báo JWT. Tôi không chắc làm cách nào để ngăn Laravel tạo XSRF-TOKEN. Tôi có thể giảm kích thước gói tiêu đề nếu tôi có thể ngăn Laravel tạo mã thông báo XSRF. Bạn có bất kỳ kinh nghiệm với điều này? Andy Tôi đã triển khai đầy đủ một giải pháp tương tự như bài viết bằng cách sử dụng mã thông báo JWT. Tôi không chắc làm cách nào để ngăn Laravel tạo XSRF-TOKEN. Tôi có thể giảm kích thước gói tiêu đề nếu tôi có thể ngăn Laravel tạo mã thông báo XSRF. Bạn có bất kỳ kinh nghiệm với điều này? LaraLara Bạn đã quên băm mật khẩu khi đăng ký hay có gì đó không ổn với Người dùng của tôi. tạo nên ? . Đăng nhập hoạt động cho người dùng mà tôi đã tạo bằng Laravel, vì mật khẩu của họ được băm. Cuối cùng, nếu tôi thêm hàm băm vào đăng ký của bạn, thì cả đăng ký và đăng nhập đều hoạt động bình thường. $credentials['password'] = Hàm băm. make ($credentials['password']); LaraLara Bạn đã quên băm mật khẩu khi đăng ký hay có gì đó không ổn với Người dùng của tôi. tạo nên ? . Đăng nhập hoạt động cho người dùng mà tôi đã tạo bằng Laravel, vì mật khẩu của họ được băm. Cuối cùng, nếu tôi thêm hàm băm vào đăng ký của bạn, thì cả đăng ký và đăng nhập đều hoạt động bình thường. $credentials['password'] = Hàm băm. make ($credentials['password']); MarcioCamello $HTTP_RAW_POST_DATA, thats problem, disable in php. ini to always_populate_raw_post_data -1, and enable your CORS in laravel, withCredentials. true and test MarcioCamello $HTTP_RAW_POST_DATA, thats problem, disable in php. ini to always_populate_raw_post_data -1, and enable your CORS in laravel, withCredentials. true and test R0bertinski Great article, but it would be perfect if you showed the endpoints queries, params, etc,,, , I have a problem when I try to access to any restricted endpoint, because I want to send the TOKEN like a HEADER param, an it only works when I send it like a URL param, I can not understand. Cheers R0bertinski Great article, but it would be perfect if you showed the endpoints queries, params, etc,,, , I have a problem when I try to access to any restricted endpoint, because I want to send the TOKEN like a HEADER param, an it only works when I send it like a URL param, I can not understand. Cheers Cliverson Batista Hi, My header . Accept. application/json, text/plain, */* Accept-Language. pt-BR,pt;q=0. 8,en-US;q=0. 5,en;q=0. 3 Accept-Encoding. gzip, deflate Authorization. Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2xvY2FsaG9zdFwvand0MVwvcHVibGljXC9zaWdudXAiLCJpYXQiOjE0NjA1MTAzMzMsImV4cCI6MTQ2MDUxMzkzMywibmJmIjoxNDYwNTEwMzMzLCJqdGkiOiI0MjU0NDA1MDMzYzU1ODJhYThkZTQzM2RjOGQ1ZDkxOSJ9. xxAbUfWWDPiBEV6ObVG_xt-tDnwVR7mdHa7w-cLztN4 X-XSRF-TOKEN. eyJpdiI6IjJJdXV5WmdoY3ZnQ01TK3hoRHlaVUE9PSIsInZhbHVlIjoiVTlYVTBqQkxFV1VMVlRRYTROUDdPMU9iOFB6MmNsczZNNTNJMDRzZ01XbVc5RGgrOE8yS1pGNlU2XC9WbThMUVpLSm1VZFV0akFwK0F2V1FUYXh1VHpBPT0iLCJtYWMiOiIxOGJiYjZmZjA5NWMxYzM0MjVhMTZhNThjNTk5MGY4OGEwMTYyY2QwNDg5NjM1MDFlNGE2ZmZjMzNhZDc0Yzg2In0= Referer. http. //localhost/jwt/public/ Cookie. laravel_session=eyJpdiI6ImRrTmxHRE5oYzhWMG1OakxzMndyN3c9PSIsInZhbHVlIjoiRkxpRExFZjVvUlBNamN1UEFweTdURTNZa0RxMHM3K3pWeGJcL0xIdm1sNjdhTHZBeVgyd08zZUJUcDZXS080cHA1Q0o0RlRVVmFRdUtMeGlMelRWTUp3PT0iLCJtYWMiOiIwYjZmZGMxMzhjM2QzMWE3Zjg5YTcwYmFiY2YyNTc4ZmI5NmFmODMwODRiODk2MDgxZjc1NmZhZTMzMjljMzZkIn0%3D Connection. keep-alive Response in JWTAuth. php line 296 at JWTAuth->requireToken(null) in JWTAuth. php line 189 Cliverson Batista Hi, My header . Accept. application/json, text/plain, */* Accept-Language. pt-BR,pt;q=0. 8,en-US;q=0. 5,en;q=0. 3 Accept-Encoding. gzip, deflate Authorization. Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2xvY2FsaG9zdFwvand0MVwvcHVibGljXC9zaWdudXAiLCJpYXQiOjE0NjA1MTAzMzMsImV4cCI6MTQ2MDUxMzkzMywibmJmIjoxNDYwNTEwMzMzLCJqdGkiOiI0MjU0NDA1MDMzYzU1ODJhYThkZTQzM2RjOGQ1ZDkxOSJ9. xxAbUfWWDPiBEV6ObVG_xt-tDnwVR7mdHa7w-cLztN4 X-XSRF-TOKEN. eyJpdiI6IjJJdXV5WmdoY3ZnQ01TK3hoRHlaVUE9PSIsInZhbHVlIjoiVTlYVTBqQkxFV1VMVlRRYTROUDdPMU9iOFB6MmNsczZNNTNJMDRzZ01XbVc5RGgrOE8yS1pGNlU2XC9WbThMUVpLSm1VZFV0akFwK0F2V1FUYXh1VHpBPT0iLCJtYWMiOiIxOGJiYjZmZjA5NWMxYzM0MjVhMTZhNThjNTk5MGY4OGEwMTYyY2QwNDg5NjM1MDFlNGE2ZmZjMzNhZDc0Yzg2In0= Referer. http. //localhost/jwt/public/ Cookie. laravel_session=eyJpdiI6ImRrTmxHRE5oYzhWMG1OakxzMndyN3c9PSIsInZhbHVlIjoiRkxpRExFZjVvUlBNamN1UEFweTdURTNZa0RxMHM3K3pWeGJcL0xIdm1sNjdhTHZBeVgyd08zZUJUcDZXS080cHA1Q0o0RlRVVmFRdUtMeGlMelRWTUp3PT0iLCJtYWMiOiIwYjZmZGMxMzhjM2QzMWE3Zjg5YTcwYmFiY2YyNTc4ZmI5NmFmODMwODRiODk2MDgxZjc1NmZhZTMzMjljMzZkIn0%3D Connection. keep-alive Response in JWTAuth. php line 296 at JWTAuth->requireToken(null) in JWTAuth. php line 189 Sekhar Composer. josn -------------------- "require". { "php". ">=5. 5. 9", "laravel/framework". "5. 2. *", "guzzlehttp/guzzle". "~6. 0", "doctrine/dbal". "^2. 5", "barryvdh/laravel-cors". "^0. 7. 3", "tymon/jwt-auth". "0. 5. *" }, app. php ------------ Barryvdh\Cors\CorsServiceProvider. class Nhà cung cấp ở trên không hỗ trợ và tôi gặp lỗi dưới đây khi thực hiện "nhà cung cấp thủ công php. publish". [Symfony\Component\Debug\Exception\FatalErrorException] Class 'Barryvdh\LaravelCors\CorsServiceProvider' not found Please let me know the solution ASAP Sekhar Composer. josn -------------------- "require". { "php". ">=5. 5. 9", "laravel/framework". "5. 2. *", "guzzlehttp/guzzle". "~6. 0", "doctrine/dbal". "^2. 5", "barryvdh/laravel-cors". "^0. 7. 3", "tymon/jwt-auth". "0. 5. *" }, app. php ------------ Barryvdh\Cors\CorsServiceProvider. class Nhà cung cấp ở trên không hỗ trợ và tôi gặp lỗi dưới đây khi thực hiện "nhà cung cấp thủ công php. publish". [Symfony\Component\Debug\Exception\FatalErrorException] Class 'Barryvdh\LaravelCors\CorsServiceProvider' not found Please let me know the solution ASAP Simone NoLogo Hi, I have a question; when I try the login my angular app crash. this is the error. angular. js. 12783 TypeError. Cannot read property 'replace' of undefined. any idea? Simone NoLogo Hi, I have a question; when I try the login my angular app crash. this is the error. angular. js. 12783 TypeError. Cannot read property 'replace' of undefined. any idea? Simone NoLogo Very Good Article . I have a simple question. after login I refresh the page , with htmlMode = false, and in the console I see. Cannot read property 'replace' of undefined. I'm trying to solve it but no solution at this moment Simone NoLogo Very Good Article . I have a simple question. after login I refresh the page , with htmlMode = false, and in the console I see. Cannot read property 'replace' of undefined. I'm trying to solve it but no solution at this moment Arun Karthi Mani hi Your article was good enough,Is there is any of ur repo with an advanced version which has 99% security Arun Karthi Mani hi Your article was good enough,Is there is any of ur repo with an advanced version which has 99% security Wadii Basmi thank you very much Wadii Basmi thank you very much Olof Hi. Any chance you can update this tutorial for the latest Laravel version? I see the config/app. php file have different way of listing the providers in 5. 2 Olof Hi. Any chance you can update this tutorial for the latest Laravel version? I see the config/app. php file have different way of listing the providers in 5. 2 Ferri Sutanto whats your suggestion to get current user? add to custom claims? or just add to response data along with token? or maybe after login we need to fetch /me to get current user? Thanks Ferri Sutanto whats your suggestion to get current user? add to custom claims? or just add to response data along with token? or maybe after login we need to fetch /me to get current user? Thanks Mathieu Rossignol May I ask you what tool did you use for your beautiful network flow charts? Something with mscgen as engine or a specialized tool for network charts? Or just A classical drawing tool? If it's a dedicated tool I'd like to use it. Thx Mathieu Rossignol May I ask you what tool did you use for your beautiful network flow charts? Something with mscgen as engine or a specialized tool for network charts? Or just A classical drawing tool? If it's a dedicated tool I'd like to use it. Thx Dmitry Litvinenko Excellent article. Very neat solution Dmitry Litvinenko Excellent article. Very neat solution Raees Uzhunnan Can someone help me here ; can JWT be implemented with GET ? Raees Uzhunnan Can someone help me here ; can JWT be implemented with GET ? Lokesh L M It Clear's my confusions and got clear solutions for API authentication and Token generation. Thanks for posting awasome article Lokesh L M It Clear's my confusions and got clear solutions for API authentication and Token generation. Thanks for posting awasome article Kashyap Gandhi How to create JWT token without credential for guest api response for all future calls? My plan is app developer first call my guest api, in that api we match some logic for valid request, based on successful match lumen generate guest token without any credential and return back in response. This guest token further use for all future api calls. If any user take login/signup then we generate new token and return back in api response. Please help me to generate the guest token which will work same as authorize token Kashyap Gandhi How to create JWT token without credential for guest api response for all future calls? My plan is app developer first call my guest api, in that api we match some logic for valid request, based on successful match lumen generate guest token without any credential and return back in response. This guest token further use for all future api calls. If any user take login/signup then we generate new token and return back in api response. Please help me to generate the guest token which will work same as authorize token nikhil gaikwad @disqus_hePYgZ134A. disqus Did u solve the issue. i am also facing the same issue nikhil gaikwad @disqus_hePYgZ134A. disqus Did u solve the issue. i am also facing the same issue nikhil gaikwad @disqus_pchuJt26Qj. disqus and @brunosantana. disqus Did u solve the issue. I am also facing the same issue. I am using L5 and laravel cors 0. 8. * nikhil gaikwad @disqus_pchuJt26Qj. disqus and @brunosantana. disqus Did u solve the issue. I am also facing the same issue. I am using L5 and laravel cors 0. 8. * Abraham Bosch for publishing configs, the correct command is . "php artisan vendor. publish --tag=config" Abraham Bosch for publishing configs, the correct command is . "php artisan vendor. publish --tag=config" Muhammad Ali learn lots of concepts from article Muhammad Ali learn lots of concepts from article Andrie Tri Laksono im get an error in signup POST http. //localhost. 8000/signup 409 (Conflict) how to solve this? Andrie Tri Laksono im get an error in signup POST http. //localhost. 8000/signup 409 (Conflict) how to solve this? Jhansi Pasupuleti Can we implement JWT in php? can you help me out? Jhansi Pasupuleti Can we implement JWT in php? can you help me out? thủ dâm adhiana Thank you thủ dâm adhiana Thank you The Brain™ Laravel is a PHP Framework The Brain™ Laravel is a PHP Framework Daniel Wolf To publish the config in Laravel 5 use. $ php artisan vendor. xuất bản --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" Bạn có thể tìm Cấu hình cài đặt tại đây. https. //github. com/tymondesigns/jwt-auth/wiki/Cài đặt Daniel Wolf To publish the config in Laravel 5 use. $ php artisan vendor. xuất bản --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" Bạn có thể tìm Cấu hình cài đặt tại đây. https. //github. com/tymondesigns/jwt-auth/wiki/Cài đặt John johnson Hands-down the best explanation of JWT I've read. Thank you John johnson Hands-down the best explanation of JWT I've read. Thank you Syrine Jamel Please how can i log out the user from all devices ? Thanks Syrine Jamel Please how can i log out the user from all devices ? Thanks Ehtesham Mehmood Great effort, Thumbs up. Here is another list of angular 4 authentication examples. http://www.phpcodify.com/angular-4-authentication-login-10-examples/ Angular 4 Authentication Login example Ehtesham Mehmood Great effort, Thumbs up. Here is another list of angular 4 authentication examples. http://www.phpcodify.com/angular-4-authentication-login-10-examples/ Angular 4 Authentication Login example rana phool when i logged in through username or password then they store token in over browser. if i copy these token and in other browser open console and create new localstorage with name acess_token and pase copy token value and refresh page they logged in my profile with out asking username and password. jwt is secure???? kindly explain rana phool when i logged in through username or password then they store token in over browser. if i copy these token and in other browser open console and create new localstorage with name acess_token and pase copy token value and refresh page they logged in my profile with out asking username and password. jwt is secure???? kindly explain Kontoiru is this safe? if not, how to secure it Rick Holland Excellent article Tino, thank you Sugesh P Can we add different payload for a JWT token? One payload contains user authentication information and other token contains authentication and authorisation How to handle JWT token expiration in PHP?What you can do is set the expiration time in the config/jwt. php file to 7 days so if a user authenticates the token will expire after 7 days. 'ttl' => env('JWT_TTL', 60*24*7), The value is in minutes.
What is the expiry of JWT token?The JWT access token is only valid for a finite period of time. Using an expired JWT will cause operations to fail. As you saw above, we are told how long a token is valid through expires_in . This value is normally 1200 seconds or 20 minutes .
How can get expired token in PHP?By default, user tokens are valid indefinitely. You can set an expiration to tokens by passing it as the second parameter .
When token is expired?When a token has expired or has been revoked, it can no longer be used to authenticate Git and API requests . It is not possible to restore an expired or revoked token, you or the application will need to create a new token. This article explains the possible reasons your GitHub token might be revoked or expire. |