在网站的实际使用中,通常会有一些界面,需要在显示前,进行登录验证,

使用装饰器是一种方法,即:

首先设置好装饰器:

一、返回json串

from common import BaseResponse
import json

def auth_login_json(func):
    def inner(self,*args,**kwargs):
        if not self.session['is_login']:
            ret = BaseResponse()
            ret.summary = "auth failed"
            self.write(json.dumps(ret.__dict__))
            return
        func(self,*args,**kwargs)
    return inner  

二、直接跳转

from config import LOGIN_URL

def auth_login_redirect(func):
    def inner(self,*args,**kwargs):
        if not self.session['is_login']:
            self.redirect(LOGIN_URL)
            return
        func(self,*args,**kwargs)
    return inner

然后,在handler中使用:

class ThumbUpHandler(BaseHandler):
    @auth_login_json
    def post(self, *args, **kwargs):
        # 返回对象
        ret = BaseResponse()

        # 获取提交的信息:user_id、news_id
        try:
            ret.status = 1
            ret.message = get_args(self)
            User_ThumbUp_News().thumb_up(ret.message)
        except:
            print('将错误信息写入log日志!')

        self.write(json.dumps(ret.__dict__))

最后,在ajax中进行设置:

function thumbUP_success(ths,response){
    if(response.status == 1){
        if(response.message.status==1){
            $.tipsBox({
                obj: $(ths),
                str: "+1",
                callback: function(){ window.location.reload();},
            });
        }else{
            $.tipsBox({
                obj: $(ths),
                str: "-1",
                color:'gray',
                callback: function(){ window.location.reload();},
            });
        };
    }else{
        $("#login").show();
    };
}