<p>我可以想出多种方法来做这件事。如果您希望您的整个django应用程序受到基本身份验证的保护,那么您可以向wsgi应用程序添加一个身份验证中间件。Django在您的项目中创建一个默认的wsgi应用程序。添加以下中间件wsgi.py文件:</p>
<pre><code>class AuthenticationMiddleware(object):
def __init__(self, app, username, password):
self.app = app
self.username = username
self.password = password
def __unauthorized(self, start_response):
start_response('401 Unauthorized', [
('Content-type', 'text/plain'),
('WWW-Authenticate', 'Basic realm="restricted"')
])
return ['You are unauthorized and forbidden to view this resource.']
def __call__(self, environ, start_response):
authorization = environ.get('HTTP_AUTHORIZATION', None)
if not authorization:
return self.__unauthorized(start_response)
(method, authentication) = authorization.split(' ', 1)
if 'basic' != method.lower():
return self.__unauthorized(start_response)
request_username, request_password = authentication.strip().decode('base64').split(':', 1)
if self.username == request_username and self.password == request_password:
return self.app(environ, start_response)
return self.__unauthorized(start_response)
</code></pre>
<p>然后,不是打电话
应用程序=获取\u wsgi_application()
您应该使用:
application=AuthenticationMiddleware(应用程序,“myusername”,“mypassword”)</p>
<p>这将确保对django服务器的每个请求都经过基本身份验证。
请注意,除非您使用HTTPS,否则基本身份验证是不安全的,用户凭据将不会加密。在</p>
<p>如果只希望基本身份验证覆盖部分视图,则可以将上述类修改为函数修饰符:</p>
^{pr2}$
<p>然后,您可以用这个来装饰您的视图,以激活基本身份验证。在</p>
<p>请注意,用户名/密码在上面的示例中都是硬编码的。你可以用你自己的机制来代替它。在</p>
<p>希望这有帮助</p>