CZ_OpenSpice/Server/handler/main.py

31 lines
1.4 KiB
Python
Raw Normal View History

2021-01-20 20:01:46 +08:00
import tornado.web
from pycket.session import SessionMixin
from bokeh.embed import server_document
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('template'))
class AuthBaseHandler(tornado.web.RequestHandler,SessionMixin):
def get_current_user(self): #重写get_current_user()方法
return self.session.get('username',None) #session是一种会话状态跟数据库的session可能不一样
#添加装饰器,装饰需要验证的请求
class IndexHandler(AuthBaseHandler):
@tornado.web.authenticated #@tornado.web.authenticated装饰器包裹get方法时表示这个方法只有在用户合法时才会调用authenticated装饰器会调用get_current_user()方法获取current_user的值若值为False则重定向到登录url装饰器判断有没有登录如果没有则跳转到配置的路由下去但是要在app.py里面设置login_url
def get(self,*args,**kwargs):
user = self.get_current_user()
self.render('index.html',user=user)
class Spice_Xyce_Handler(AuthBaseHandler):
@tornado.web.authenticated
def get(self,*args,**kwargs):
template = env.get_template('spice.html')
script = server_document('http://localhost:5006/bkapp')
self.write(template.render(script=script))
# script = server_document('http://localhost:5006/bkapp')
# self.render('spice.html',script=script)