zoukankan      html  css  js  c++  java
  • Web.py session用户认证

    调试一个用session来认证用户的程序 大概是这个样子 基本上可以当作webpy session认证的示例程序了

    #!/usr/bin/env python
    #coding=utf-8
    import web
    import time
    
    urls = (
        '/', 'index',
        '/xml', 'pushxml',
        '/login', 'login',
        '/logout', 'logout',
    )
    render = web.template.render('templates/')
    web.config.debug = False
    app = web.application(urls, locals())
    session = web.session.Session(app, web.session.DiskStore('sessions'))      
    
    class index():
        def GET(self):
            try:
                if session.logged_in == True:
                    return '<h1>You are logged in</h1><a href="/logout">Logout</a>'
            except AttributeError:
                pass
            return '<h1>You are not logged in.</h1><a href="/login">Login now</a>'
    
    def authorize(func):
        def logged(*args,**dic):
            if session.logged_in==True:
                func(*args,**dic)
            else:
                raise web.seeother('/login')
        return logged
    
    class pushxml():
        # @authorize
        def GET(self):
            try:
                if session.logged_in == True:
                    web.header('Content-Type', 'text/xml')
                    i = web.input(data=None)
                    return render.response(i.data)
            except AttributeError:
                pass
           
    class login():
        def GET(self):
            try:
                session.logged_in = False
            except AttributeError:
                pass
            return """
                <form action=/login method=POST>
                    <table id="login">
                        <tr>
                            <td>User: </td>
                            <td><input type=text name='user'></td>
                        </tr>
                        <tr>
                            <td>Password: </td>
                            <td><input type="password" name=passwd></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type=submit value=LOGIN></td>
                        </tr>
                    </table>
                </form>
            """
               
        def POST(self):
            login_data = web.input()
            if login_data.user == 'a' and login_data.passwd == 'a':
                session.logged_in = True
                print "posted"
                print session
                raise web.seeother('/')
           
    class logout():
        def GET(self):
            try:
                session.logged_in = False
                session.kill()
            except AttributeError:
                pass
            raise web.seeother('/')
    
    if __name__ == '__main__':
        app.run()
    
    

      开始的时候为了方便web.config.debug = True(这是默认值) session总是不能保存 经过相当长时间的纠结发现错误竟然出在这里

    web.config.debug = False

    如上 关掉debug模式session可以正常保存了 究竟失身么原因我也搞不清楚了 今天才看到 http://webpy.org/cookbook/sessions

    sessions doesn’t work in debug mode because it interfere with reloading. see session_with_reloader for more details.

    FUCK web.py!!!

     
  • 相关阅读:
    DXF文件格式理解
    Qt Creator调试命令行参数
    qt编译错误:invalid new-expression of abstract class type "*"
    dxf文件解析库libdxf初探
    ubuntu linux编译libdxfrw
    CAD DWG/DXF文件C++解析库libdxfrw
    AutoCAD版本dxf文件与dxflib解析库支持探索
    Linux 6种日志查看方法(转)
    码率、分辨率、帧率和画质计算单位时间码流大小(转)
    纯手工打造车载车牌识别检测系统(转)
  • 原文地址:https://www.cnblogs.com/51reboot/p/4006029.html
Copyright © 2011-2022 走看看