前言
web.py框架下面的用户登录功能实现比较简单一点,只是针对sesson的判断和浏览器cookie的处理
我这里只是针对实现登录的功能,对于账户信息的存储和密码的加密都没有做任何处理。
session和cookie的原理
用户访问网站某页面,服务端会根据客户端传过来的cookie在本地寻找是否有对应的session,如果有则保留上一次的状态(如果cookie没有过期),如果没有马上创建一个,然后返回一个新数据给客户端。然后跳转到login页面,进行登录操作,登录完成,服务端会把cookie的自建参数传递给客户端,客户端完成cookie的重新创建。
对session和cookie的一些理解注意:下面源代码中涉及py脚本中显示问题,所以html的代码都加了”\&;转义,如果要使用需要把转义符删除掉源代码功能实现
- 实现用户登录,根据用户的账号和密码进行验证实现用户登录和退出功能实现已登录用户在多页面之间跳转
登录模块的源代码login.py
#!/usr/bin/env python# coding: utf-8import webfrom web import formurls = ( '/','Index', '/test','Test', '/login','Login', '/logout','Logout',)render = web.template.render("/opt/py/login")allowed = ( ('admin','123123'),)web.config.debug = Falseapp = web.application(urls, locals())session = web.session.Session(app, web.session.DiskStore('sessions'))class Index: def GET(self): if session.get('logged_in',False): return '\&;lt;\h\1\&;gt;Login Success!!!\&;lt;\/\h1\&;gt;<a href="http://1k8k.com/"/test">test</a><a href="/logout">Logout</a>"' raise web.seeother('/login')class Login: def GET(self): return render.login() def POST(self): i = web.input() username = i.get('username') passwd = i.get('passwd') if (username,passwd) in allowed: session.logged_in = True web.setcookie('system_mangement', , 60) raise web.seeother('/') else: return '\&;lt;\h1\&;gt;Login Error!!!\&;lt;\/\h1\&;gt;<a href="http://1k8k.com/"/login">Login</a>"'class Logout: def GET(self): session.logged_in = False raise web.seeother("/login")class Test: def GET(self): if session.get('logged_in',False): return '\&;lt;\h1\&;gt; test login success!!!\&;lt;\/\h1\&;gt;<a href="http://1k8k.com/"/logout">Logout</a>"' return '\&;lt;\h1\&;gt;logout now\&;lt;\/h1\&;gt;<a href="http://1k8k.com/"/login">Login</a>"'if __name__ == '__main__': app.run()
登录模块调用的模板?login.html
<html> <head> <title>Login Test</title> </head> <h1>Login</h1> <FORM method=POST> <table id="login"> <tr> <td>User: </td> <td><input type=text name='username'></td> </tr> <tr> <td>Password: </td> <td><input type="password" name=passwd></td> </tr> <tr> <td></td> <td><input type=submit></td> </tr> </table> </form></html>
源代码下载地址:github(保存在login分支里面)
原文地址:Web.py中的用户登录实现, 感谢原作者分享。 而这些目标凝结成希望的萌芽,在汗水与泪水浇灌下,绽放成功之花。