示例#1
0
文件: __init__.py 项目: Neo-python/cc
 def inner(*args, **kwargs):
     if session.get('admin'):  # 判断登入状态,如果session有admin则正常执行函数
         return func(*args, **kwargs)
     else:
         # 从cookie中解密token,验证.
         token = request.cookies.get('token')
         if token:
             token = Token.string_decrypt(token)
             if token.verify_account():  # 验证token是否过期
                 session['admin'] = token.model.to_dict_(
                 )  # 写入用户信息至session状态
                 return func()
     return redirect(url_for('admin_bp.login'))  # 没有登入状态,又没有cookie.则转跳到登入页面
示例#2
0
文件: views.py 项目: Neo-python/cc
def login():
    """登入请求视图"""
    if session.get('admin'):
        return redirect('/')
    else:
        token = request.cookies.get('token')
        if token:  # 在未能获取cookie的情况下,直接返回登录页面
            token = Token.string_decrypt(
                token=token)  # 解密token, 得到account与deadline两项加密数据
            token.verify_account(
            )  # 验证account与deadline验证成功,token.model将为->Admin数据模型
            if token.model:  # 证明验证完成
                session['admin'] = token.model.to_dict_()  # 写入session状态
                return redirect('/')  # 跳转主页
        return render_template('login.html')  # 返回登录页
示例#3
0
文件: views.py 项目: Neo-python/cc
def csp_change():
    """修改二级密码"""
    token = Token.string_decrypt(token=request.form.get('token'))
    if not token.verify_salt(salt='__csp__'):  # 验证token,也获取加盐后的account
        return 'token invalid'
    pwd = request.form.get('new_pwd')

    account = token.original_text.replace('__csp__', '')  # 获得去盐后的账户
    assert account == session['admin']['account'], '申请账户与当前账户一致,防止篡改他人二级密码'

    # 修改二级密码,提交事务
    token.model.verification = common.my_md5(pwd)
    token.model.direct_update()
    return common.TransitionPage(title='二级密码变更成功', head='操作完成',
                                 seconds=10).transition()
示例#4
0
文件: views.py 项目: Neo-python/cc
def change_password():
    """修改密码"""
    token = Token.string_decrypt(
        request.form.get('token'))  # 解密token,如果token是伪造的,这一步就会触发异常

    if token.verify_salt(salt='__cp__'):  # 解密并且验证token
        token.model.password = request.form.get('new_pwd')  # 修改密码
        token.model.encryption_password().direct_update()  # 加密并且保存操作

        return common.TransitionPage(
            '密码修改完成,请重新登录', '操作完成',
            url=url_for('admin_bp.sign_out')).transition()
    else:
        return common.TransitionPage('请求时效已过期,请重新申请!',
                                     '操作失败',
                                     url=url_for('admin_bp.cp_application'),
                                     seconds=10).transition()