{ "info": { "author": "Mihai Balint", "author_email": "balint.mihai@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Sanic-HTTPAuth\n==============\n\n[![Build Status](https://travis-ci.org/miguelgrinberg/Flask-HTTPAuth.png?branch=master)](https://travis-ci.org/miguelgrinberg/Flask-HTTPAuth)\n\nThis a fork of [Flask-HTTPAuth](https://github.com/miguelgrinberg/Flask-HTTPAuth) for Sanic. It is a simple extension that provides Basic and Digest HTTP authentication for Sanic routes.\n\nStill a work in progress, contributions are welcome.\n\nInstallation\n------------\nThe easiest way to install this is through pip.\n```\npip install Sanic-HTTPAuth\n```\n\nBasic authentication example\n----------------------------\n\n```python\nimport hashlib\nfrom sanic import Sanic\nfrom sanic_httpauth import HTTPBasicAuth\n\napp = Sanic(__name__)\nauth = HTTPBasicAuth()\n\n\ndef hash_password(salt, password):\n salted = password + salt\n return hashlib.sha512(salted.encode(\"utf8\")).hexdigest()\n\n\napp_salt = \"APP_SECRET - don't do this in production\"\nusers = {\n \"john\": hash_password(app_salt, \"hello\"),\n \"susan\": hash_password(app_salt, \"bye\"),\n}\n\n\n@auth.verify_password\ndef verify_password(username, password):\n if username in users:\n return users.get(username) == hash_password(app_salt, password)\n return False\n\n\n@app.route(\"/\")\n@auth.login_required\ndef index(request):\n return \"Hello, %s!\" % auth.username()\n\n\nif __name__ == \"__main__\":\n app.run()\n```\n\nNote: See the [Flask-HTTPAuth documentation](http://pythonhosted.org/Flask-HTTPAuth) for more complex examples that involve password hashing and custom verification callbacks.\n\nDigest authentication example\n-----------------------------\n\n```python\nfrom sanic import Sanic\nfrom sanic_httpauth import HTTPDigestAuth\nfrom sanic_session import Session\n\napp = Sanic(__name__)\napp.config[\"SECRET_KEY\"] = \"secret key here\"\nauth = HTTPDigestAuth()\nSession(app)\n\nusers = {\"john\": \"hello\", \"susan\": \"bye\"}\n\n\n@auth.get_password\ndef get_pw(username):\n if username in users:\n return users.get(username)\n return None\n\n\n@app.route(\"/\")\n@auth.login_required\ndef index(request):\n return \"Hello, %s!\" % auth.username()\n\n\nif __name__ == \"__main__\":\n app.run()\n```\n\nResources\n---------\n\n- [Flask-HTTPAuth Documentation](http://flask-httpauth.readthedocs.io/en/latest/)\n- [PyPI](https://pypi.org/project/Sanic-HTTPAuth)\n- [Change log](https://github.com/MihaiBalint/Sanic-HTTPAuth/blob/master/CHANGES.md)", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/MihaiBalint/sanic-httpauth/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Sanic-HTTPAuth", "package_url": "https://pypi.org/project/Sanic-HTTPAuth/", "platform": "any", "project_url": "https://pypi.org/project/Sanic-HTTPAuth/", "project_urls": { "Homepage": "http://github.com/MihaiBalint/sanic-httpauth/" }, "release_url": "https://pypi.org/project/Sanic-HTTPAuth/0.1.2/", "requires_dist": null, "requires_python": "", "summary": "Basic, Digest and Bearer token authentication for Sanic routes", "version": "0.1.2" }, "last_serial": 5460036, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "49acdf11e09fa74f5cce0f2206755c69", "sha256": "e1d52cf1e521d008981fb669bdffb8e6d197c5c3d3260129f1bad4462df88e67" }, "downloads": -1, "filename": "Sanic-HTTPAuth-0.1.0.tar.gz", "has_sig": false, "md5_digest": "49acdf11e09fa74f5cce0f2206755c69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32158, "upload_time": "2019-06-27T18:37:01", "url": "https://files.pythonhosted.org/packages/7e/b8/941c3ffb9d7a3a637d2553d09cbc4b21680dde9b19153d3ba424ec90ee3a/Sanic-HTTPAuth-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "364833d40b66a270037be3ea03bd1a6d", "sha256": "2f55a07cabc6ccb229fa5b6c0ae4e0830d779b955d26bbd03d1d72350a120815" }, "downloads": -1, "filename": "Sanic-HTTPAuth-0.1.1.tar.gz", "has_sig": false, "md5_digest": "364833d40b66a270037be3ea03bd1a6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35466, "upload_time": "2019-06-27T19:52:36", "url": "https://files.pythonhosted.org/packages/a0/64/0a73fa5e45800be70742802bb2a476ca2412fb826e4e5f36c7ab93e53d89/Sanic-HTTPAuth-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5603dac9371e8917d320f1c0833931df", "sha256": "c5d3171f57fc30ae48f0135c3e07e88af8f3a0113877a2cd57adcee8a2dea6e1" }, "downloads": -1, "filename": "Sanic-HTTPAuth-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5603dac9371e8917d320f1c0833931df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35522, "upload_time": "2019-06-28T04:58:53", "url": "https://files.pythonhosted.org/packages/15/9a/cf36ee8a05ca26444c3af819ac841b1b90a3a84a851806a319f26913cb30/Sanic-HTTPAuth-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5603dac9371e8917d320f1c0833931df", "sha256": "c5d3171f57fc30ae48f0135c3e07e88af8f3a0113877a2cd57adcee8a2dea6e1" }, "downloads": -1, "filename": "Sanic-HTTPAuth-0.1.2.tar.gz", "has_sig": false, "md5_digest": "5603dac9371e8917d320f1c0833931df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35522, "upload_time": "2019-06-28T04:58:53", "url": "https://files.pythonhosted.org/packages/15/9a/cf36ee8a05ca26444c3af819ac841b1b90a3a84a851806a319f26913cb30/Sanic-HTTPAuth-0.1.2.tar.gz" } ] }