· 5 years ago · Oct 11, 2020, 12:30 PM
1# -*- coding: utf8 -*-
2
3import asyncio
4import time
5import base64
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 handlera(request):
13 data = {'some': 'data'}
14 return web.json_response(data)
15
16def user_login(request):
17 redirect_to = request.POST.get(REDIRECT_FIELD_NAME, request.GET.get(REDIRECT_FIELD_NAME, ''))
18 login_form = AuthenticationForm(request, data=request.POST)
19 if login_form.is_valid():
20 if not is_safe_url(url=REDIRECT_FIELD_NAME, host=request.get_host()):
21 redirect_to = settings.LOGIN_REDIRECT_URL
22 auth_login(request, login_form.get_user())
23 return redirect(settings.LOGIN_REDIRECT_URL if redirect_to == '' else redirect_to)
24 else:
25 return render(request, 'index.html', {'login_form': login_form, 'display': 'block', 'active': 'login'})
26
27
28async def handler(request):
29 session = await get_session(request)
30 last_visit = session['last_visit'] if 'last_visit' in session else None
31 text = 'Last visited: {}'.format(last_visit)
32 return web.Response(text=text)
33
34async def make_app():
35 app = web.Application()
36 fernet_key = fernet.Fernet.generate_key()
37 secret_key = base64.urlsafe_b64decode(fernet_key)
38 setup(app, EncryptedCookieStorage(secret_key))
39 app.add_routes([web.get('/', handler)])
40 return app
41
42if __name__ == '__main__':
43 web.run_app(make_app())