· 5 years ago · Oct 10, 2020, 08:32 PM
1import asyncio
2import time
3import base64
4import jinja2
5import aiohttp_jinja2
6from cryptography import fernet
7from aiohttp import web
8from aiohttp_session import setup, get_session, session_middleware
9from aiohttp_session.cookie_storage import EncryptedCookieStorage
10
11
12async def handler(request):
13 data = {'some': 'data'}
14 return web.json_response(data)
15
16async def handler(request):
17 session = await get_session(request)
18 last_visit = session['last_visit'] if 'last_visit' in session else None
19 text = 'Last visited: {}'.format(last_visit)
20 return web.Response(text="text")
21
22async def make_app():
23 app = web.Application()
24 fernet_key = fernet.Fernet.generate_key()
25 secret_key = base64.urlsafe_b64decode(fernet_key)
26 setup(app, EncryptedCookieStorage(secret_key))
27 app.add_routes([web.get('/', handler)])
28 return app
29
30async def do_login(request):
31 data = await requst.post()
32 login = data['login']
33 password = data['password']
34
35@aiohttp_jinja2.template('login.html')
36async def login(request):
37
38 if request.method == 'POST':
39 form = await request.post()
40 error = validate_login(form)
41 if error:
42 return {'error': error}
43 else:
44 # login form is valid
45 location = request.app.router['index'].url_for()
46 raise web.HTTPFound(location=location)
47
48 return {}
49
50app.router.add_get('/', index, name='index')
51app.router.add_get('/login', login, name='login')
52app.router.add_post('/login', login, name='login')
53
54
55if __name__ == '__main__':
56 web.run_app(make_app())