У меня следующий код:
import sys
from zope.interface import implementer
from twisted.python import log
from twisted.internet import reactor
from twisted.web import server, resource, guard
from twisted.cred.portal import IRealm, Portal
from twisted.cred.checkers import InMemoryUsernamePasswordDatabaseDontUse
class GuardedResource(resource.Resource):
"""
A resource which is protected by guard and requires authentication in order
to access.
"""
def getChild(self, path, request):
return self
def render(self, request):
return "Authorized!"
@implementer(IRealm)
class SimpleRealm(object):
"""
A realm which gives out L{GuardedResource} instances for authenticated
users.
"""
def requestAvatar(self, avatarId, mind, *interfaces):
if resource.IResource in interfaces:
return resource.IResource, GuardedResource(), lambda: None
raise NotImplementedError()
def main():
log.startLogging(sys.stdout)
checkers = [InMemoryUsernamePasswordDatabaseDontUse(joe='blow')]
portal = Portal(SimpleRealm(), checkers)
resource = guard.HTTPAuthSessionWrapper(portal, [guard.BasicCredentialFactory('auth')])
reactor.listenTCP(8889, server.Site(resource = resource))
reactor.run()
if __name__ == '__main__':
main()
, когда мы запускаем сервер и заходим на URL: http://localhost:8889/
появляется подсказка и просит нас ввести имя пользователя и пароль.После ввода user = joe
и password = blow
мы все еще не имеем права доступа к веб-сайту.Что не так в приведенном выше коде и как это исправить?