मैं सिर्फ जेडब्ल्यूटी का उपयोग करके लॉगिन के साथ अपना एसएफ 3 एपीआई बनाने की कोशिश कर रहा हूं लेकिन मुझे प्रमाणीकरण के साथ कुछ परेशानी हो रही है। तो यहां मेरी विन्यास और कुछ परीक्षण है जो मुझे एहसास हुआ।सिम्फनी 3 + जेडब्ल्यूटी + कोणीय 2 + प्रमाणीकरण (विकल्प विधि)
security.yml:
security:
firewalls:
login:
pattern: ^/api/auth
stateless: true
anonymous: true
form_login:
check_path: /api/auth/login-check
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false
api:
pattern: ^/api
stateless: true
lexik_jwt: ~
access_control:
- { path: ^/api/auth, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
routing.yml:
auth:
path: /auth
defaults: { _controller: api.controller.auth:postAction }
methods: [OPTIONS, POST]
api_login_check:
path: /auth/login-check
config.yml:
:nelmio_cors:
paths:
'^/api/':
allow_origin: ['*']
allow_headers: ['*']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE', 'OPTIONS']
max_age: 3600
जब मैं मार्ग डिबग मैं इस उत्पादन प्राप्त
$ php bin/console debug:router
----------------------------------- ------------------ -------- ------ -----------------------------------
Name Method Scheme Host Path
----------------------------------- ------------------ -------- ------ -----------------------------------
....
api_homepage ANY ANY ANY /api/
auth OPTIONS|POST ANY ANY /api/auth
api_login_check ANY ANY ANY /api/auth/login-check
....
अभी तक इतना अच्छा है, अब यहां समस्याएं आती हैं।
मैं
$ curl -v -X POST http://api.local/api/auth/login-check -d _username=user -d _password=user
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to api.local (127.0.0.1) port 80 (#0)
> POST /api/auth/login-check HTTP/1.1
> Host: api.local
> User-Agent: curl/7.51.0
> Accept: */*
> Content-Length: 33
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 33 out of 33 bytes
< HTTP/1.1 200 OK
< Server: nginx/1.10.3
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/7.1.3
< Set-Cookie: PHPSESSID=c4o6kuelf914gjnq09m38ec0c7; path=/; HttpOnly
< Cache-Control: no-cache, private
< Date: Fri, 12 May 2017 16:37:23 GMT
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE, PUT
< Access-Control-Allow-Credentials: true
< Access-Control-Allow-Headers: User-Agent,Keep-Alive,Content-Type,Access-Control-Allow-Headers
<
* Curl_http_done: called premature == 0
* Connection #0 to host api.local left intact
{"token":"b2xlc9.......DW6uAwx4"}
बढ़िया है, यह काम कर रहा से प्रमाणीकरण की वापसी का परीक्षण करने के लिए प्रबंधन!
जब मैं ब्राउज़र में एक ही अनुरोध का प्रयास करता हूं तो मुझे विकल्प विधि पर 404 प्राप्त होता है, इसलिए मैं एक कर्ल विकल्प अनुरोध के साथ अनुरोध को फिर से बनाने का प्रयास करता हूं (वास्तव में मुझे नहीं पता कि यह कोई समझ में आता है, लेकिन मैंने कोशिश की यह वैसे भी, जहां प्रतिक्रिया:
$ curl -v -X OPTIONS http://api.local/api/auth/login-check -d _username=user -d _password=user
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to api.local (127.0.0.1) port 80 (#0)
> OPTIONS /api/auth/login-check HTTP/1.1
> Host: api.local
> User-Agent: curl/7.51.0
> Accept: */*
> Content-Length: 33
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 33 out of 33 bytes
< HTTP/1.1 404 Not Found
< Server: nginx/1.10.3
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/7.1.3
< Cache-Control: no-cache, private
< Date: Fri, 12 May 2017 16:35:49 GMT
<
{"error":{"code":404,"message":"Not Found"}}
* Curl_http_done: called premature == 0
* Connection #0 to host api.local left intact
क्या मैं समझता हूँ कि एपीआई विकल्प विधि के लिए मार्ग, मैं भी तरीकों को जोड़ने का प्रयास नहीं मिल रहा है है: [विकल्प, पोस्ट]api_login_check को मार्ग लेकिन एक ही आउटपुट।
परीक्षण और बिना nelmioCorsBundle, एक ही आउटपुट।
मैं यहां थोड़ा खो गया हूं, कोई भी देख सकता है कि मैं क्या गलत कर रहा हूं?
धन्यवाद