前言 web.py框架下面的用户登录功能实现比较简单一点,只是针对sesson的判断和浏览器cookie的处理 我这里只是针对实现登录的功能,对于账户信息的存储和密码的加密都没有做任何处理。 session和cookie的原理用户访问网站某页面,服务端会根据客户端传过来的cookie在本地寻找是否有对应的session,如果有则保留上一次的状态(如果cookie没有过期),如果没有马上创建一个,然后返回一个新数据给客户端。然后跳转到login页面,进行登录操作,登录完成,服务端会把cookie的自建参数传递给客户端,客户端完成cookie的重新创建。 对session和cookie的一些理解 注意:下面源代码中涉及py脚本中显示问题,所以html的代码都加了''转义,如果要使用需要把转义符删除掉 源代码 功能实现 实现用户登录,根据用户的账号和密码进行验证 实现用户登录和退出功能 实现已登录用户在多页面之间跳转 登录模块的源代码 login.py #!/usr/bin/env python # coding: utf-8 import web from web import form urls = ( '/','Index', '/test','Test', '/login','Login', '/logout','Logout', ) render = web.template.render('/opt/py/login') allowed = ( ('admin','123123'), ) web.config.debug = False app = 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 '<h1>Login Success!!!</h1>testLogout' 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 '<h1>Login Error!!!</h1>Login' 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 '<h1> test login success!!!</h1>Logout' return '<h1>logout now</h1>Login' 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分支里面) |
|