一个web2.0时代的网站,自然少不了用户注册,登录,验证的功能,那么python可以怎样实现登录验证呢

这里我们使用装饰器来做登录验证

网站构成

假设我们有这样一个网站,是一个类似与博客园这种多个用户的网站,每个用户都又一个自己的管理界面,博客园内部也应该有一个管理员系统

所以网站的用户角色可以分为:

  1. 未登录用户
  2. 登录的普通用户,就是我们
  3. 管理员用户

首先,未登录用户只能查看别人的博客,要想评论别人的文章就需要登录,这时就要使用登录验证,来区分未登录和登录用户

其次,登录的普通用户也不应该能够访问管理员系统,不然岂不是会乱套,这时也需要一次验证

代码如下


# coding:utf-8
import sys user = {"name":"", "is_login":False, "is_admin":False} def login_confirm(func):
def wrap(*args, **kwrgs):
if user["is_login"]:
func(*args, **kwrgs)
else:
print "未登录"
return func
return wrap def admin_confirm(func):
def wrap(*args, **kwrgs):
if user["is_admin"]:
func(*args, **kwrgs)
else:
print "没有权限"
return func
return wrap def index():
print "This page is for everyone" @login_confirm
def usr():
print "This is user page!" @login_confirm
@admin_confirm
def admin():
print "This is admin page!" if __name__=="__main__":
while True:
print "(1) 访问首页 (2) 登录 (3) 用户界面 (4)管理员 (q)退出\n"
num = raw_input("请输入对应数字:")
if num == "q":
sys.exit(0)
if num == "1":
index()
elif num == "2":
name = raw_input("请输入你的名字:")
if name == "admin":
user["name"] = name
user["is_login"] = True
user["is_admin"] = True
else:
user["name"] = name
user["is_login"] = True
elif num == "3":
usr()
elif num == "4":
admin()
else:
print "错误的选项"

其中login_confirm装饰器用来验证登录,admin_confirm装饰器用来验证管理员权限,这里的用户信息存储在user_info这个字典里,在实际应用中,可以配合session使用,从session中获取用去信息,来执行相关操作

python验证登录的更多相关文章

  1. Scrapy中使用cookie免于验证登录和模拟登录

    Scrapy中使用cookie免于验证登录和模拟登录 引言 python爬虫我认为最困难的问题一个是ip代理,另外一个就是模拟登录了,更操蛋的就是模拟登录了之后还有验证码,真的是不让人省心,不过既然有 ...

  2. 【Python数据分析】Python模拟登录(一) requests.Session应用

    最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学 ...

  3. 【py登陆】python模拟登录

    用Python模拟登录网站 前面简单提到了 Python 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序.简单说一下流程:先用cookielib获取cookie ...

  4. Oracle查询银行卡数、修改余额及验证登录

    建立Oracle表 create table T_BANKCARD ( card_id VARCHAR2(20) not null, user_id VARCHAR2(20) not null, us ...

  5. thinkphp通行证服务,验证登录,注销登录

    <?php /** * 通行证服务 */ class PassportService extends Service { /** * 验证用户或者管理员是否已登录 * @return boole ...

  6. python实现登录函数,比较简单

    一个简单的python实现登录以及修改密码的函数 #密码错误3次,锁定登录: password_list = ['] def account_login(): Tries = 3 while Trie ...

  7. 一步一步实现FormsAuthentic验证登录

    本文不讲原理,只讲用法,原理性的东西网上特别多,不过还是会对一些要用到的东西进行解释,不深入讲原理.本文中用的是Vs2012   .net mvc 4.0.原理看这篇文章,看完这个文章绝对受益匪浅. ...

  8. JAVA短信验证登录

    短信验证登陆 1.点击触发,以电话号码为参数调用发送验证登录短信方法 2.默认模板为验证模板 生成6位验证码 3.将生成的验证码和手机号码放入缓存,(已经设置好缓存存放时间) 4.调用发送模板短信方法 ...

  9. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十四║ Vuex + JWT 实现授权验证登录

    壹周回顾 哈喽,又是元气满满的一个周一,又与大家见面了,周末就是团圆节了,正好咱们的前后端也要团圆了,为什么这么说呢,因为以后的开发可能就需要前后端一起了,两边也终于会师了,还有几天Vue系列就基本告 ...

随机推荐

  1. Atitit intellij idea的使用总结attilax

    Atitit intellij idea的使用总结attilax 1. ideaIC-2016.2.4.exe1 1.1. Ij vs eclipse市场份额1 1.2. Ij的优点(方便的支持gro ...

  2. Mysql 函数分类

    比较重要的 1 REVERSE(s)    将字符串s的顺序反过来 2 TRIM(s)          去掉字符串s开始和结尾处的空格 一.数学函数  数学函数主要用于处理数字,包括整型.浮点数等. ...

  3. salesforce 零基础学习(二十九)Record Types简单介绍

    在项目中我们可能会遇见这种情况,不同的Profile拥有不同的页面,页面中的PickList标签可能显示不同的值.这个时候,使用Record Types可以很便捷的搞定需求. Record Types ...

  4. 新手入门:史上最全Web端即时通讯技术原理详解

    前言 有关IM(InstantMessaging)聊天应用(如:微信,QQ).消息推送技术(如:现今移动端APP标配的消息推送模块)等即时通讯应用场景下,大多数都是桌面应用程序或者native应用较为 ...

  5. PHP将富文本编辑后的内容,去除样式图片等只保留txt文本内容

    1.从数据库读取富文本内容样式如下: <p style=";text-indent: 0;padding: 0;line-height: 26px"><span ...

  6. 大型 JavaScript 应用架构中的模式

    原文:Patterns For Large-Scale JavaScript Application Architecture by @Addy Osmani 今天我们要讨论大型 JavaScript ...

  7. 【博客美化】04.自定义地址栏logo

    博客园美化相关文章目录: [博客美化]01.推荐和反对炫酷样式 [博客美化]02.公告栏显示个性化时间 [博客美化]03.分享按钮 [博客美化]04.自定义地址栏logo [博客美化]05.添加Git ...

  8. 信息加密之Base64

    Base64是一种最简单的简单的加密形式,经常被使用,记录一下,以便日后可以深入了解. jdk格式: //获得密钥Base64Encoder encoder = new Base64Encoder() ...

  9. Entity Framework想说爱你不容易,这么多的报错,这么多的限制,该如何解决?

    首先看一下采用MODEL FIRST的方式设计的实体模型对象关系图: 注意:EntityOne中有导航属性:EntityTwo 在如下代码中的几种情况进行新增操作,均会报错,新增都不会成功: stat ...

  10. Maven提高篇系列之(四)——使用Profile

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...