Metadata-Version: 1.1
Name: sanic-secure-session
Version: 0.2.1
Summary: A server-side secure sessions plugin for Sanic
Home-page: https://github.com/saabeilin/sanic-secure-session
Author: Sergei Beilin
Author-email: saabeilin@gmail.com
License: MIT license
Description-Content-Type: UNKNOWN
Description: Gotta get your sessions fast!
        =============================
        
        Cookie-based sessions are still a common way to track users's sessions. 
        Flask and Django have really good support for server-side sessions, but not Sanic yet.
        So `sanic-secure-session` is an attempt to create a simple yet enough secure session support for Sanic.
        
         * Server-side sessions (currently only Redis backend implemented)
         * Signed session cookie (sure, using `itsdangerous`)
         * Easily extensible backends (only serialization and storage-related logic there)
        
        ## Usage example
        
        
        ```python
        from datetime import timedelta
        
        import asyncio_redis
        from sanic import Sanic
        from sanic.response import text
        
        from sanic_secure_session import SanicSession
        from sanic_secure_session.backends.redis import RedisStorageBackend
        
        
        class RedisPool:
            """
            A simple wrapper class that allows you to share a connection
            pool across your application.
            """
            _pool = None
        
            async def get_pool(self):
                if not self._pool:
                    self._pool = await asyncio_redis.Pool.create(
                        host='localhost', port=6379, poolsize=10
                    )
        
                return self._pool
        
        
        redis_pool = RedisPool()
        
        storage_backend = RedisStorageBackend(redis_connection=redis_pool.get_pool)
        
        app = Sanic()
        SanicSession(app, secret_key='aeNgaif6Ieyishoh', storage_backend=storage_backend,
                     ttl=timedelta(minutes=1), http_only=True, secure=True)
        
        
        @app.route("/")
        async def index(request):
            # interact with the session like a normal dict
            if not request['session'].get('foo'):
                request['session']['foo'] = 0
        
            request['session']['foo'] += 1
        
            return text({
                'cookies': request.cookies,
                'session': request['session']
            })
        
        
        if __name__ == "__main__":
            app.run(host="0.0.0.0", port=8000, debug=True)
        
        ```
        
        
        
Keywords: sanic,session
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Unix
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Utilities
