Web.py中的用户登录实现

前言

web.py框架下面的用户登录功能实现比较简单一点,只是针对sesson的判断和浏览器cookie的处理 我这里只是针对实现登录的功能,对于账户信息的存储和密码的加密都没有做任何处理。 session和cookie的原理 用户访问网站某页面,服务端会根据客户端传过来的cookie在本地寻找是否有对应的session,如果有则保留上一次的状态(如果cookie没有过期),如果没有马上创建一个,然后返回一个新数据给客户端。然后跳转到login页面,进行登录操作,登录完成,服务端会把cookie的自建参数传递给客户端,客户端完成cookie的重新创建。
  • 对session和cookie的一些理解
  • 注意:下面源代码中涉及py脚本中显示问题,所以html的代码都加了"\"转义,如果要使用需要把转义符删除掉

源代码

功能实现

  1. 实现用户登录,根据用户的账号和密码进行验证
  2. 实现用户登录和退出功能
  3. 实现已登录用户在多页面之间跳转

登录模块的源代码

  • 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 '\<\h\1\>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分支里面)

你可能感兴趣的:(python,web.py)