Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查用户';cookie在tornado对象中的方位?_Python_Oop_Cookies_Tornado - Fatal编程技术网

Python 如何检查用户';cookie在tornado对象中的方位?

Python 如何检查用户';cookie在tornado对象中的方位?,python,oop,cookies,tornado,Python,Oop,Cookies,Tornado,我正在使用带有python语言的tornado web框架。 例如,我想创建一个名为 class parentClass(tornado.web.RequestHandler): def get(self): cookie = self.get_cookie("cookie") 在那之后,我想做一些儿童课程,比如 class childClass(parentClass): self.write("you have permission") 如何检查用户是否被允许在父类中使用网站?如

我正在使用带有python语言的tornado web框架。 例如,我想创建一个名为

class parentClass(tornado.web.RequestHandler):
def get(self):
    cookie = self.get_cookie("cookie")
在那之后,我想做一些儿童课程,比如

class childClass(parentClass):
self.write("you have permission")

如何检查用户是否被允许在父类中使用网站?如何从父类控制子类?

如果您的用例是用户身份验证,则可以在tornado中使用
@tornado.web.authenticated
decorator对处理程序中具有安全访问权限的任何方法进行完美处理。 这将调用处理程序的
get\u current\u user
方法,您可以在基类中实现该方法(在您的示例中,它将是您的父类)

有关更多信息和工作代码,请参阅下面我从

用户身份验证

当前经过身份验证的用户在每个请求处理程序中都可用 作为self.current\u用户,并在每个模板中作为current\u用户。通过 默认情况下,当前用户为无

要在应用程序中实现用户身份验证,您需要 重写请求处理程序中的get_current_user()方法以 根据cookie的值等确定当前用户。在这里 是一个让用户只需通过 指定昵称,然后将其保存在cookie中:

class BaseHandler(tornado.web.RequestHandler):
    def get_current_user(self):
        return self.get_secure_cookie("user")

class MainHandler(BaseHandler):
    def get(self):
        if not self.current_user:
            self.redirect("/login")
            return
        name = tornado.escape.xhtml_escape(self.current_user)
        self.write("Hello, " + name)

class LoginHandler(BaseHandler):
    def get(self):
        self.write('<html><body><form action="/login" method="post">'
                   'Name: <input type="text" name="name">'
                   '<input type="submit" value="Sign in">'
                   '</form></body></html>')

    def post(self):
        self.set_secure_cookie("user", self.get_argument("name"))
        self.redirect("/")

application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/login", LoginHandler),
], cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__")
class MainHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        name = tornado.escape.xhtml_escape(self.current_user)
        self.write("Hello, " + name)

settings = {
    "cookie_secret": "__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__",
    "login_url": "/login",
}
application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/login", LoginHandler),
], **settings)