0

Python と MongoDB 環境は初めてです。Tornado + MongoDB を使用して Python で小さなアプリケーションを実装しています。セッションをmongoDBに保存したい。

server.py

import os
import tornado.web 
import tornado.ioloop
import settings

application = tornado.web.Application(
  settings.urls,
  my_template_path,
  my_static_path
)
if __nam__ == '__main__':
  application.listen(8000)
  tornado.ioloop.IOLoop.instance().start()

settings.py

import handler as H

urls = [
  (r"/",          H.ShowHome),
  (r"/login",     H.ShowLogin),
  (r"/dashboard", H.ShowDashboard)
]

handler.py

import os
# import session or some library ????

class ShowHome(tornado.web.RequestHandler):
  SESSION = False
  def initialize(self):
     #
     # check session related things here 
     #
     # self.SESSION = True or False based on session cookie 

  def get(self):
    if not self.SESSION:
       self.redirect('/login')
    else:
       self.render('index.html')

class ShowLogin(tornado.web.RequestHandler):
  SESSION = False
  def initialize(self):
     #
     # check session related things here 
     #
     # self.SESSION = True or False based on session cookie 

  def get(self):
    if self.SESSION:
       self.redirect('/dashboard')
    else:
       self.render('login.html')


class ShowDashboard(tornado.web.RequestHandler):
  SESSION = False
  def initialize(self):
     #
     # check session related things here 
     #
     # self.session = True or False based on session cookie 

  def get(self):
    if not SESSION:
       self.redirect('/login')
    else:
       self.render('dashboard.html')

ハンドラーでセッションを確認したいのですが、どうすればよいですか?

4

1 に答える 1

2

このようなことを意味しますか?

class Base(tornado.web.RequestHandler):
    def get_unique_id(self):
        return self.get_secure_cookie('unique_id')

    def set_unique_id(self, some_value):
        return self.set_secure_cookie('unique_id', some_value)


class ShowLogin(Base):
  def get(self):
    if get_unique_id():
       # Get stuff from Mongo using unique_id
       # mongo calls
       self.redirect('/dashboard')
    else:
       self.render('login.html')


class LoginLogin(Base):
  def post(self):
    self.set_unique_id(some_id)

あなたはおそらくこれをしたくないでしょう - 誰かが認証されたデコレータでログインまたはログアウトした場合、トルネードに処理させてください

また、大量のデータや非常に機密性の高いデータを保持している場合を除き、セッション データを Cookie に入れるのが通常 (かつ簡単) です。

于 2013-10-17T16:12:16.103 に答える