gpt4 book ai didi

flask - 如何阻止用户访问管理页面?

转载 作者:行者123 更新时间:2023-12-03 17:00:31 25 4
gpt4 key购买 nike

我想阻止用户访问管理 url,我已经保护了 View ,但是 /管理员/仍然可以访问。

管理员.py

import os

from flask import request, redirect, url_for
from werkzeug import secure_filename

from flask_admin import Admin, AdminIndexView
from flask_admin import BaseView, expose
from flask_admin.contrib.sqla import ModelView
from flask_admin.contrib.fileadmin import FileAdmin

from flask_login import current_user,login_required

from develop.extentions import admin_permission

from wtforms import FileField

class AdminIndex(AdminIndexView):
@expose('/admin/')
def index(self):
if not current_user.is_authenticated:
return redirect(url_for('main.index'))
return self.render('admin/home.html')

def is_accessible(self):
return current_user.roles('admin')

class CustomModelView(ModelView):
def is_accessible(self):
return current_user.is_authenticated and admin_permission.can
def inaccessible_callback(self, name, **kwargs):
return redirect(url_for('main.index', next=request.url))

class CustomFileView(FileAdmin):

allowed_extensions = (
'txt',
'md',
'js',
'css',
'html',
'jpg',
'gif',
'png'
)

editable_extensions = ('md','html','js','css','txt')

def is_accessible(self):
return current_user.is_authenticated and admin_permission.can

class UserView(CustomModelView):
column_list = ('username', 'confirmed','joined')

column_searchable_list = ('username', 'id')
column_filters = ('joined', 'email', 'username')

path = os.path.abspath(
os.path.join(
os.path.dirname(__file__),
os.pardir
)
)

form_extra_fields = {
"image": FileField('Image')
}

def on_model_change(self, form, model, is_created):
path = os.path.abspath(
os.path.join(
os.path.dirname(__file__),
os.pardir
)
)

image_path = os.path.join(path, 'static', 'images')
photo_data = request.files.get(form.image.name)

if photo_data:
name = secure_filename(photo_data.filename)
model.image = '/static/images/' + name
photo_data.save(os.path.join(image_path, name))

通过这种方式,我的所有其他 View 都被隐藏了,但我仍然访问管理页面,请问如何防止未经身份验证的用户甚至访问 管理员 .

最佳答案

在您的 index 中处理您的身份验证检查如果未通过身份验证,则运行并进行重定向。

@expose('/')
def index(self):
if not current_user.is_authenticated:
return redirect(url_for('main.index'))
return self.render('admin/home.html')

关于flask - 如何阻止用户访问管理页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com