slav0nic's blog

Заметки о python, linux и других занимательных вещах

Авторизация в web.py при помощи beaker'a

Делать было нечего, дело было вечером... В) Простенький пример:

  1. from beaker.session import SessionMiddleware
  2. import web
  3. from web import form
  4.  
  5. log_in = form.Form(
  6.             form.Textbox("login", form.notnull, description="User name"),
  7.             form.Password("password", form.notnull, description="Password")
  8.         )
  9.        
  10. def logged(session):
  11.     if "logeddin" in session:
  12.         if session["logeddin"] == 1:
  13.             return True
  14.     return False
  15.  
  16. urls = (
  17.     '/', 'index',
  18.     '/logout', 'logout',)
  19.  
  20. users = {"sl": "123"}
  21.  
  22. class index:
  23.     def GET(self):
  24.         web.header("Content-Type","text/html; charset=utf-8")
  25.         session = web.ctx.environ['beaker.session']
  26.         if logged(session):
  27.             print "U logged as <b>%s</b>"%session["username"]
  28.             print "<a href='/logout'>logout</a>"
  29.         else:
  30.             print "<form name='main' method='post'> "+ log_in.render() + "<input type='submit' />"
  31.        
  32.     def POST(self):
  33.         session = web.ctx.environ['beaker.session']
  34.         i = web.input()
  35.         if i.login in users and users[i.login] == i.password:
  36.             session['logeddin'] = 1
  37.             session['username'] = i.login
  38.             session.save()
  39.         web.seeother("/")
  40.            
  41. class logout:
  42.     def GET(self):
  43.         session = web.ctx.environ['beaker.session']
  44.         session.invalidate()
  45.         web.seeother("/")
  46.         """
  47.         or
  48.         session.delete()
  49.         session.save()
  50.         """
  51. def session_mw(app):
  52.     return SessionMiddleware(app, key = "sid")
  53.  
  54. if __name__ == "__main__":
  55.     web.run(urls, globals(), *(web.reloader, session_mw))Syhi-подсветка кода
  56. юзер sl, пароль 123 надеюсь кому-то пригодится, рассказывать здесь думаю нечего

web.py