如何在龙卷风对象中定位检查用户的cookie?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在龙卷风对象中定位检查用户的cookie?相关的知识,希望对你有一定的参考价值。
我正在使用带有python语言的龙卷风web框架。我想创建一个以示例命名的父类
class parentClass(tornado.web.RequestHandler):
def get(self):
cookie = self.get_cookie("cookie")
之后我想做一些子课,比如
class childClass(parentClass):
self.write("you have permission")
如何检查是否允许用户在父类中使用该网站?如何从父类控制子类?
如果您的用例是用户身份验证,那么在龙卷风中使用@tornado.web.authenticated
装饰器在任何具有安全访问权限的方法中完美处理。这将调用处理程序的get_current_user
方法,您可以在Baseclass中实现(在您的示例中将是您的ParentClass)
有关更多信息和工作代码,请参阅下面的摘录,我从相应的tornado documentation中获取
用户认证
当前经过身份验证的用户在每个请求处理程序中都可用作self.current_user,在每个模板中都可用作current_user。默认情况下,current_user为None。
要在应用程序中实现用户身份验证,您需要覆盖请求处理程序中的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__")
您可以要求用户使用Python decorator tornado.web.authenticated登录。如果请求转到使用此装饰器的方法,并且用户未登录,则会将其重定向到login_url(另一个应用程序设置)。上面的例子可以重写:
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)
以上是关于如何在龙卷风对象中定位检查用户的cookie?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户是不是通过 Laravel 上的 cookie 会话进行身份验证?
如何检查ColdFusion 2016中是否存在cookie?