为了实现记录级的权限控制,在必须在每一个model中都要增加一个创建者(的字段,才有可能实
现记录级的权限控制。但一一给每个model类增加创建者字段,还是比较费事的。现在通过model
继承的方法来解决此问题。
models.py:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Author(models.Model):
author = models.ForeignKey(User)
class Meta:
abstract = True
class A(Author):
a = models.CharField(max_length=5)
def __unicode__(self):
return "%s:%s" % (self.author,self.a)
class B(Author):
b= models.CharField(max_length=5)
def __unicode__(self):
return "%s:%s" % (self.author,self.b)
将Author model设为abstract,则可以使用得不必生成author数据表。model A与model B继承自
Author,所以model A与model B都有字段author.
为了实现权限控制,最重要的内容是在admin.py中:
from app.models import *
class AuthorAdmin(admin.ModelAdmin):
model = Author
def get_model_class(self):
raise NotImplementedError
def queryset(self,request):
model_class = self.get_model_class()
if request.user.is_superuser:
return model_class.objects.all()
return model_class.objects.filter(author=request.user)
class AAdmin(AuthorAdmin):
def get_model_class(self):
return A
class BAdmin(AuthorAdmin):
def get_model_class(self):
return B
admin.site.register(A,AAdmin)
admin.site.register(B,BAdmin)
因为Author model是abstract的,没有生成相应的表,也没有objects,所以queryset
(self,request)中不能通过Author.objects来获取相应的函数。如何在父类中获取子类名称,是
一个难题。现在是能过建立一个get_model_class()函数来解决,子类继承AuthorAdmin后,必须
重载get_model_class(),以返回正确的model类。
AuthorAdmin类实现了权限控制,所有继承于它的类都有了权限控制了。
分享到:
相关推荐
通过以上步骤,你就可以在 `ThinkPHP6.0` 中成功整合 `Hui-Admin` 后台模板,并实现基于 `Auth` 的菜单权限控制。这不仅提高了后台的安全性,还使得管理界面更加有序,提升了用户体验。在实际项目中,你可能还需要...
标题所提到的知识点是关于在Django框架中使用django-guardian扩展包来实现对django-admin管理后台的行级权限控制。在Django中,默认的权限系统提供了基于模型的权限控制,即可以控制哪些用户或用户组能够进行哪些...
在SSH框架中,我们可以在Action类中通过注解或配置文件定义权限控制,如`@Secured("ROLE_ADMIN")`表示只有拥有管理员角色的用户才能访问该方法。 5. **动态权限控制**:权限控制应具备灵活性,允许在运行时动态调整...
在企业级应用中,权限管理是一个至关重要的环节,它涉及到数据安全、用户访问控制以及组织架构的合理划分。本文将详细探讨如何使用Java技术来开发一个高效、灵活且安全的企业级权限管理系统。 首先,理解权限管理的...
通过这种方式,我们能够实现全局的权限控制,无论用户尝试访问哪个页面,都会先经过我们的权限检查。此外,由于HTTP模块的灵活性,我们可以根据需求扩展其功能,比如集成更复杂的授权策略,或者与其他系统(如数据库...
总结一下,要在Django Admin中实现数据添加时自动记录用户信息,主要步骤如下: 1. 在模型`models.py`中定义一个字段(如`user`)来存储用户信息。 2. 在`admin.py`中创建一个自定义的`ModelAdmin`类,并注册你的...
总结来说,CDH 6.3.1中的Ranger 2.1.0-admin是实现大数据平台安全策略的核心工具,它提供了强大的权限管理、审计跟踪以及与多种服务的集成能力。对于任何希望确保数据安全的企业,理解和掌握Ranger的使用是至关重要...
4. **用户权限组中间表 (admin_privilegegroup)**:记录用户与权限组的多对多关系,以此实现权限的分配。 此外,还设计了一个名为`Privilege`的权限类,利用Java 5.0的注解特性,标记需要进行权限过滤的方法,并...
在C# WinForm应用开发中,权限管理是一个关键部分,涉及到用户访问控制和安全策略的实施。本篇文章将深入探讨C# WinForm中如何处理权限问题,包括登录权限的实现和功能权限的详细讲解。 首先,让我们理解登录权限。...
5. **权限控制**:集成 Laravel 的 Gate 和 Policy 机制,实现角色和权限的分配,便于实现细粒度的访问控制。 6. **自定义扩展**:允许开发者创建自定义控制器、模型、视图和中间件,满足特定业务需求。 **三、...
- **授权与认证**: 支持 JWT(JSON Web Tokens)或 Laravel 的内置 Gate 和 Policy 机制,实现用户身份验证和权限控制。 - **API 响应格式化**: 可配置的响应格式,如 JSON,便于前端处理。 - **错误处理**: 统一的...
通过这种方式,系统可以在运行时根据用户的请求动态加载XML文件中的权限信息,并从数据库中获取具体用户的权限设置,从而实现对用户请求的有效控制。 #### 实际应用案例 本文还提到了一个具体的实例,即在现有系统...
4. **Blade模板引擎**:Blade是Laravel内置的轻量级模板引擎,它支持条件语句、循环、包含、继承等,使视图的创建更加简单。 5. **Artisan命令行工具**:Artisan提供了许多内置命令,如迁移(migrations)、生成...
在 Laractive Admin 中,中间件可能被用来实现登录验证和权限控制。 6. **表单验证**:Laravel 提供了内置的表单验证机制,可以在控制器中定义验证规则,轻松处理客户端和服务器端的验证。 7. **Blade 模板引擎**...
在简单的应用场景下,可以通过判断用户是否登录来实现基本的权限控制。例如,在PHP中可以使用以下代码片段: ```php if ($isLogin === true) { // 执行某些操作 } else { // 不执行任何操作 } ``` 这里 `$...
2. 管理员权限控制:Dcat Admin支持多级菜单和角色权限分配,可以通过简单的配置实现对后台资源的精细控制。 3. CRUD操作:通过Dcat Admin的Grid和Form组件,可以快速创建数据展示、编辑、删除等功能,极大地减少了...
### Windows 8系统文件夹权限设置详解 #### 一、前言 在Windows 8操作系统中,文件夹和文件的权限管理是确保数据安全的重要...通过以上步骤,您可以有效地管理Windows 8中的文件夹权限,从而更好地保护您的数据安全。
2. 权限控制:通过RBAC(Role-Based Access Control)角色权限控制机制,实现了用户角色与权限的灵活配置。 3. 数据管理:提供数据的导入导出、备份恢复功能,确保数据的安全和便捷管理。 4. 日志记录:系统会记录...
对于更复杂的权限控制,可以考虑使用 Laravel 的包如 `spatie/laravel-permission` 来实现角色和权限管理。安装后,你可以为管理员分配角色,每个角色具有不同的权限。 ```bash composer require spatie/laravel-...
10. 权限继承(Privilege Inheritance):用户通过角色获得的权限可以在他们创建的对象上使用,即使这些权限没有直接授予他们。 11. PUBLIC角色:Oracle中的PUBLIC角色对所有用户开放,向PUBLIC授予的权限将对所有...