Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pyx/sanic-auth

Sanic-Auth - Simple Authentication for Sanic
https://github.com/pyx/sanic-auth

authentication sanic

Last synced: about 1 month ago
JSON representation

Sanic-Auth - Simple Authentication for Sanic

Awesome Lists containing this project

README

        

============================================
Sanic-Auth - Simple Authentication for Sanic
============================================

Sanic-Auth implements a minimal backend agnostic session-based user
authentication mechanism for `Sanic`_.

.. _Sanic: https://github.com/channelcat/sanic

Quick Start
===========

Installation
------------

.. code-block:: sh

pip install --upgrade Sanic-Auth

How to use it
-------------

.. code-block:: python

from sanic_auth import Auth
from sanic import Sanic, response

app = Sanic(__name__)
app.config.AUTH_LOGIN_ENDPOINT = 'login'

@app.middleware('request')
async def add_session_to_request(request):
# setup session

auth = Auth(app)

@app.route('/login', methods=['GET', 'POST'])
async def login(request):
message = ''
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
# fetch user from database
user = some_datastore.get(name=username)
if user and user.check_password(password):
auth.login_user(request, user)
return response.redirect('/profile')
return response.html(HTML_LOGIN_FORM)

@app.route('/logout')
@auth.login_required
async def logout(request):
auth.logout_user(request)
return response.redirect('/login')

@app.route('/profile')
@auth.login_required(user_keyword='user')
async def profile(request, user):
return response.json({'user': user})

For more details, please see documentation.

License
=======

BSD New, see LICENSE for details.

Links
=====

- `Documentation `_

- `Issue Tracker `_

- `Source Package @ PyPI `_

- `Git Repository @ Github
`_

- `Git Repository @ Gitlab
`_

- `Development Version
`_