Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki, contoh kod khusus diperlukan
Dalam aplikasi web, kawalan akses ialah fungsi utama. Melalui konfigurasi kawalan akses berasaskan kuki, pengguna boleh dihadkan daripada mengakses halaman atau sumber tertentu. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk melaksanakan kawalan akses tersebut dan memberikan contoh kod khusus.
cd /path/to/nginx/source/ ./configure --with-http_auth_request_module make sudo make install
location /protected { auth_request /auth; error_page 401 = @error401; } location = /auth { internal; proxy_pass http://backend/auth; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; }
Dalam konfigurasi di atas, lokasi /protected
mentakrifkan halaman yang dilindungi dan perintah auth_request /auth
akan menghantar permintaan kepada /auth</code > kod> lokasi untuk pengesahan. Jika pengesahan berjaya, akses ke halaman dibenarkan jika tidak, ralat 401 akan dikembalikan. <code>location /protected
定义了一个受保护的页面,auth_request /auth
指令将会发送一个请求到/auth
位置进行认证。如果认证成功,则允许访问该页面;否则,将会返回401错误。
location = /auth
定义了一个内部请求,它将会被传递给后端服务器进行认证。在这个例子中,我们假设后端服务器的地址是http://backend
,认证接口为/auth
。通过proxy_pass
指令实现请求的转发,并通过proxy_pass_request_body off
和proxy_set_header Content-Length ""
禁用请求体的传递。另外,还通过proxy_set_header X-Original-URI $request_uri
传递原始的URI信息给后端服务器。
http://backend
,认证接口为/auth
。现在,我们来编写该接口的实际实现。实现一个简单的认证接口可以使用任何Web编程语言(如Python、PHP或Java)来完成。在这里,我们以Python为例,使用Flask框架实现一个简单的接口。
from flask import Flask, request app = Flask(__name__) @app.route('/auth', methods=['POST']) def auth(): cookie = request.headers.get('Cookie') if cookie == 'your_cookie_value': return 'OK' else: return 'Unauthorized', 401 if __name__ == '__main__': app.run()
在上述代码中,我们定义了一个/auth
的路由,它接受POST请求。通过request.headers.get('Cookie')
http://backend
dan antara muka pengesahan ialah /auth
. Laksanakan pemajuan permintaan melalui arahan proxy_pass
dan lumpuhkan penghantaran badan permintaan melalui proxy_pass_request_body off
dan proxy_set_header Content-Length ""
. Selain itu, maklumat URI asal dihantar ke pelayan bahagian belakang melalui proxy_set_header X-Original-URI $request_uri
. http://backend
dan antara muka pengesahan ialah /auth
. Sekarang, mari kita tulis pelaksanaan sebenar antara muka ini. Melaksanakan antara muka pengesahan mudah boleh dilakukan menggunakan mana-mana bahasa pengaturcaraan web (seperti Python, PHP atau Java). Di sini, kami mengambil Python sebagai contoh dan menggunakan rangka kerja Flask untuk melaksanakan antara muka yang mudah.
rrreeeDalam kod di atas, kami mentakrifkan laluan /auth
, yang menerima permintaan POST. Dapatkan maklumat kuki dalam permintaan melalui request.headers.get('Cookie')
dan bandingkannya dengan kuki lalai. Jika ia sepadan, "OK" dikembalikan untuk menunjukkan pengesahan yang berjaya jika tidak, ralat 401 dikembalikan untuk menunjukkan pengesahan yang gagal.
Atas ialah kandungan terperinci Cara Nginx melaksanakan konfigurasi kawalan akses berasaskan kuki. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!