authencated认证登录
#coding:utf-8
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import time from tornado.options import define,options
from data.sqlalchemy08 import User,session
from tornado.web import authenticated
define('port',default=8000,help='run port',type=int)
define('version',default='0.0.1',help='version 0.0.1',type=str)
def auth(fun):
def wrapper(self,*agrs,**kwargs):
id=self.get_secure_cookie('ID')
if id:
return fun(self,*args,**kwargs)
else:
self.redirect('/login')
return auth
class BaseHandeler(tornado.web.RequestHandler):
def get_current_user(self):
current_user=self.get_secure_cookie('ID')
if current_user:
return current_user
else:
return None
class IndexHandler(BaseHandeler):
#用auth装饰,可省去大量重复代码,在需要登录的地方调用就可以
# @auth
#从写认证方法中的current_user
# def get_current_user(self):
# current_user = self.get_secure_cookie('ID')
# if current_user:
# return current_user
# else:
# return None
#用tornado自带的认证,需在底部app设置加上登录界面login_url,否则报错,为了再次复用,写个父类
@authenticated
# @tornado.web.authenticated
def get(self):
# id=self.get_secure_cookie('ID')
# if id:
# self.write('登录成功')
# else:
# self.redirect('/login')
self.write('登录成功') class LoginHandler(BaseHandeler):
def get(self):
#self.render('08login.html', error=None)
nextname=self.get_argument('next','')
self.render('11authencated.html',nextname=nextname) def post(self):
nextname = self.get_argument('next', '')
username = User.by_name(self.get_argument('name', ''))
passwd = self.get_argument('passwd', '')
if username and username[0].passwd == passwd:
self.set_secure_cookie('ID',username[0].username,max_age=100)
self.write('登录成功-----')
time.sleep(3)
self.redirect(nextname)
else:
self.redirect('/login') if __name__ == "__main__":
tornado.options.parse_command_line()
# print(options.port)
app=tornado.web.Application(
handlers=[
(r'/index',IndexHandler),
(r'/login',LoginHandler),
],
template_path='templates',
static_path='static',
login_url='/login',
debug=True,
cookie_secret='aaa5555sssss'
#autoescape=None, #关闭自动转义 全局的
)
#固定写法:
http_server=tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
auth.py
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body> <form method="post" action="/login?next={{ nextname }}" >
用户名</br>
<input type="text" name="name" /><br>
<input type="text" name="passwd" /><br>
<input type="submit" value="提交">
</form>
</body>
</html>
authencated认证登录的更多相关文章
- C#开发中Windows域认证登录2(扩展吉日嘎拉GPM系统)
原文地址:http://www.cuiwenyuan.com/shanghai/post/Windows-AD-Logon-Intergrated-into-Jirigala-GPM-DotNet-B ...
- C#开发中Windows域认证登录2016(扩展吉日嘎拉GPM系统V4.2)
2013年搞公司的OA时,为了统一用户登录,将Windows AD的用户和OA的账号对接,OA用户名的规则就是使用Windows AD的用户名,格式举例:Troy.Cui,原理就是先进行域服务器的认证 ...
- 使用XShell工具密钥认证登录Linux系统
如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥.哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方式登 ...
- Linux学习笔记总结--ssh认证登录
原理简介 SSH证书认证登录的基础是一对唯一匹配密钥: 私钥(private key)和公钥(public key).公钥用于对数据进行加密,而且只能用于加密.而私钥只能对使用所匹配的公钥,所加密过的 ...
- 通过ssh协议实现用户key认证登录
author:JevonWei 版权声明:原创作品 用户实现key认证登录 主机A 192.168.198,134 主机B 192.168.198,131 主机C 192.168.198,136 创建 ...
- Angularjs 通过asp.net web api认证登录
Angularjs 通过asp.net web api认证登录 Angularjs利用asp.net mvc提供的asp.net identity,membership实现居于数据库的用户名/密码的认 ...
- 拦截器的作用之session认证登录和资源拦截
背景: 在项目中我使用了自定义的Filter 这时候过滤了很多路径,当然对静态资源我是直接放过去的,但是,还是出现了静态资源没办法访问到springboot默认的文件夹中得文件.另外,经常需要判断当前 ...
- Nginx配置认证登录
本配置实现Nginx认证登录以免重要信息暴露在公网 日志收集ELK展示工具kibana免费版不支持密码验证,需要设置Nginx反向代理然后关闭kibana默认端口5601使用Nginx端口登录进行用户 ...
- laravel 的passport Oauth 认证登录请求 的 oauth_token 重置
laravel 的passport Oauth 认证登录请求 的 oauth_token 重置 使用API登录认证是需要获取访问令牌,方法为: 参数: grant_type —— 密码模式固定为 ...
随机推荐
- GPIO基础知识
STM32 GPIO入门知识 GPIO是什么? 通用输入输出端口,可以做输入,也可以做输出.GPIO端口可通过程序配置成输入或输出. 引脚和GPIO的区别和联系 STM32的引脚中,有部分是做GPIO ...
- 16,Flask-Migrate
终于到了Flask-Migrate,之前在学习Flask-SQLAlchemy的时候,Flask支持 makemigration / migrate 吗? 答案在这里该诉你,如果你同时拥有两个三方组件 ...
- [工具使用]xshell 中“快速命令集”的使用
突然看到朋友的xshell比我多一个按钮,且一点,哈哈哈 ,实现了很炫酷的功能,耐不住好奇,问了一句,原来是快速命令集! 1.选择快速命令集(两种方法a&b) a:文件 > 属性 > ...
- Android 图片放错位置会拉伸变形
今天做了一个很小的需求,然后需要图片,我给ui要图片.直接给了我三套,还命名 x . xx. 2k 真的一开始都不知道.没有玩过这么正规的.我就用了一张,放到了hdpi下面. 后来同事帮我才知道, 图 ...
- Linux查看程序端口占用
使用命令: 1.ps -aux | grep 80 2.使用命令:netstat –apn 查看所有的进程和端口使用情况.
- 深copy和浅copy
浅copy:其实就是将容器中的内存地址存放进另一个容器中,所以两个容器本身的内存地址不相同,但容器里面的内存地址相同 代码如下: 深copy:就是从里到外完完全全复制了所有值,存进另外的内存空间,并赋 ...
- 4.实现简单的shell sed替换功能
# -*- coding:utf-8 -*- # Author: JACK ZHAO # 程序1: 实现简单的shell sed替换功能 import sys #判断参数个数 if len(sys.a ...
- django orderby
https://www.douban.com/group/topic/44329052/
- webpack 基础
1.安装: npm install --save-dev webpack npm install --save-dev webpack@<version> 如果是webpa ...
- 初识 HTML5(一)
H5其实就是H4的一个增强版本,我们在利用H5进行网页的构造会更简便,标签语义更简洁明了.首先,我们要理解HTML4,它是HTML的标记+css2+JavaScript的一些基本应用,简言之,就是AP ...