flask中权限访问装饰器

根据session里面保存的管理员id查询出对于的角色,根据角色查询出权限,根据权限查询出能够访问的路径

# 权限控制装饰器def admin_auth(f):    @wraps(f)    def decorated_function(*args, **kwargs):  # 让某个函数来继承我们的参数        admin = Admin.query.join(            Role        ).filter(            Role.id == Admin.role_id,            Admin.id == session[‘admin_id‘]        ).first()        auths = admin.role.auths        auths = list(map(lambda v: int(v), auths.split(‘,‘)))        auth_list = Auth.query().all()        urls = [v.url for v in auth_list for val in auths if v.id == val.id]        rule=request.url_rule        if rule not in urls:            abort(404)        return f(*args, **kwargs)

return decorated_function

原文地址:https://www.cnblogs.com/onlyhold/p/8724292.html

时间: 2024-08-30 15:44:41

flask中权限访问装饰器的相关文章

四 .Flask 模板 中间件 特殊装饰器 基础知识(使用)

一 Flask 模板 中间件 特殊装饰器 1 .Flask 模板语法直接看面效果 https://www.cnblogs.com/lovershowtime/p/11349576.html    模板  和Django模板类似 edit.html<form> asdfasdf asdfasdf asdf asdf 哈啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 </form> login.html <!DOCTYPE html> <html lang="zh-C

python 中多个装饰器的执行顺序

python 中多个装饰器的执行顺序: def wrapper1(f1): print('in wrapper1') def inner1(*args,**kwargs): print('in inner1') ret = f1(*args,**kwargs) return ret return inner1 def wrapper2(f2): print('in wrapper2') def inner2(*args,**kwargs): print('in inner2') ret = f2

Flask之基于route装饰器的路由系统(源码阅读解析)

一 路由系统 1. 在flask中配置URL和视图函数的路由时,首先需要在main.py中实例化一个app对象: 1 from flask import Flask, render_template 2 3 app = Flask(__name__) 2. 然后通过app实例的route方法装饰视图函数,实现路由的配置: 1 @app.route('/') 2 def hello_world(): 3 return 'Hellow World!' 3. 所有这里需要关注在Flask类里定义的ro

Python中的单例模式——装饰器实现剖析

Python中单例模式的实现方法有多种,但在这些方法中属装饰器版本用的广,因为装饰器是基于面向切面编程思想来实现的,具有很高的解耦性和灵活性. 单例模式定义:具有该模式的类只能生成一个实例对象. 先将代码写上 #创建实现单例模式的装饰器 1 def singleton (cls, *args, **kwargs): 2 instances = {} 3 def get_instance (*args, **kwargs): 4 if cls not in instances: 5 instanc

python中闭包和装饰器

---恢复内容开始--- 使用像javascript和python这样支持面向对象范式的语言进行编程时,都会涉及到闭包的概念以及闭包的使用.我们今天就从这两个方面来讨论一下闭包: 首先是维基百科中关于闭包的概念:在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包.闭包可以用来在一个函数与一组"私有"变量之间创建关联关系.在给定函数被多次调用的过程中,这些私有变量能够保持其持久性. 根据这句话,其实我们自己就可以总结出在python语

Python中的@property装饰器

要了解@property的用途,首先要了解如何创建一个属性. 一般而言,属性都通过__init__方法创建,比如: 1 class Student(object): 2 def __init__(self,name,score): 3 self.name=name 4 self.score=score 创建实例,运行结果: 1 tim=Student('Tim',97) 2 tim.score=100 3 tim.score 4 100 5 mary=Student('Mary',90) 6 m

类中三个装饰器

目录 类中的三个装饰器 一.@classmethod 二.@staticmethod装饰器装饰静态方法 三[email protected] 把一个方法伪装成属性 类中的三个装饰器 装饰类中的方法 @classmethod --->装饰类方法,不用self属性,只用类的cls属性 @staticmethod --->装饰静态方法,既不用self属性,又不用类cls的属性 @property --->把一个方法伪装属性 一.@classmethod 在类中一个方法不用对象属性,但使用静态属

Java IO中的设计模式--装饰器和适配器模式

参考:http://my.oschina.net/gao0516/blog/136103 装饰器模式:是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能 适配器模式:将一个类的接口转换成客户希望的另外一个接口 直接上代码分析: package com.think.cla; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class

django权限验证装饰器

1.模型定义User from django.db import models from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, PermissionsMixin from django.contrib.auth import get_user_model class UserManager(BaseUserManager): def _create_user(self , telephone, u