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!!!

     
  • 相关阅读:
    极大似然估计理解与应用
    逻辑回归理解及代码实现
    《剑指offer》---数值的整数次方
    线性回归理解及代码实现
    二叉搜索树(BST)---python实现
    《剑指offer》---顺时针打印矩阵
    《剑指offer》---二进制中1的个数
    《剑指offer》---输出链表倒数第k个结点
    版本控制-Git服务器搭建和常用命令使用
    hbase伪分布式平台搭建(centos 6.3)
  • 原文地址:https://www.cnblogs.com/51reboot/p/4006029.html
Copyright © 2011-2022 走看看