想和大家讨论一个rails的访问控制的设计问题。
假如我有一个user的model,实现对它的增、删、改、列表等功能。普通情况下,我们会实现类似于Scaffold生成的代码。默认进去一个user列表,然后每个user后面有edit, delete等之类的功能。同时列表上面有add的按钮。
假如我要加入权限控制,比如有的人只能看到列表。有的能看到列表和使用add功能,有的人能看到列表并且使用所有的功能。三种不同权限的人都可以看到列表,只不过对列表的操作不同。为了实现这样的访问控制,可以不同的设计。
通常,我会把所有的功能操作都放在一个controller中,这样就只有一套view。但是在显示add, edit, delete之类的按钮时进行判断,只有有相应的权限的人才可以看到这些按钮,进一步在相应的action里面也做相应的判断。 这样可以实现,但是总的来说感觉很凌乱。结构不够好,虽然可以把显示、隐藏操作按钮的逻辑放在helper里面还是感觉乱。
另外一种方法就是把不同的操作放在不同的controller里面,并且对不同的操作权限的人写不同view。这样就几乎完全独立开了。独立的controller,独立的view等等。 就没有那么繁杂的通过权限来判断是否显示按钮的逻辑了。不过就不是很DRY了,类似的列表要写好几次。
在这种情况,不知道大家是怎么设计的?谢谢指点。
分享到:
- 2009-02-01 22:46
- 浏览 1298
- 评论(7)
- 论坛回复 / 浏览 (7 / 3530)
- 查看更多
相关推荐
而Cancan则是一个用于授权的gem,用于控制用户对不同资源的访问权限。 从给定的文件内容中,我们可以提取出以下知识点: 1. Ruby on Rails和Ruby on Rails插件的基础概念。 Ruby on Rails(通常简称为Rails)是一...
3. 管理权限:Trestle提供了角色基础的访问控制,允许设置不同用户群体对资源的访问权限。 4. 菜单和导航:开发者可以通过定义菜单结构,轻松地构建后台的导航系统。 5. 集成ActiveRecord:Trestle无缝集成Rails的...
Trailblazer 是 Ruby 社区中一款创新的 Web 开发框架,它是在 Ruby on Rails(Rails)的基础上构建的,旨在为开发者提供更加直观的代码组织方式以及一个强大的面向对象架构。Trailblazer 提倡分离关注点(Separation...
Ruby on Rails 是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,用于快速开发高效、优雅的web应用程序。Redmine则是一个用Ruby on Rails构建的项目管理软件,提供了任务跟踪、...
- **MVC架构**:深入讲解Rails中的Model-View-Controller架构模式,解释每个组成部分的作用及它们之间的交互方式。 - **数据库操作**:包括Active Record的基础用法、高级查询技巧以及数据库迁移的管理方法等。 - **...
- **授权管理**:控制不同用户角色对资源的操作权限,确保数据安全。 ### 6. 测试和部署 - **单元测试**:编写单元测试以确保每个部分的功能正确。 - **集成测试**:测试各个组件之间的交互是否符合预期。 - **...
增加了访问权限控制,确保只有经过授权的用户才能访问某些资源。 **11.4 迭代F4:增加边栏,以及更多的管理功能** 增强了后台管理界面,并添加了更多实用的功能。 #### 十二、任务G:最后一点小改动 这部分介绍...
在 Rails 中,登录功能是许多 web 应用程序的基础部分,用于验证用户身份并控制访问权限。 在 Rails 应用中,实现登录界面通常涉及以下几个关键步骤: 1. **用户模型**:首先,你需要创建一个 User 模型,用于存储...
Docamp 是一个基于 Ruby on Rails 框架构建的项目管理Web应用程序,灵感来源于Basecamp。这个项目目前还处于开发阶段,意味着它可能包含了各种基本功能的实现,但可能存在未完成或需要优化的部分。让我们深入了解...
在Rails 6中开发纯后端API项目是一个常见的任务,特别是在构建现代Web应用程序时,前端与后端分离的架构越来越流行。Rails作为一个强大的Ruby框架,提供了丰富的功能来帮助开发者高效地构建API服务。下面我们将详细...
Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。在本篇文章中,我们将深入探讨Rails的安装过程,以及在这个...
标题“Rails插件收集”指的是一个关于Ruby on Rails框架中插件资源的汇集。Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在提升开发效率和...
Rails提供了如`before_action`回调和CanCanCan这样的授权库来控制访问权限。例如,只有登录用户才能创建帖子或评论,我们可以使用`authenticate_user!`这样的回调来实现。 ### 七、部署与测试 完成开发后,我们...
这种基于 ACL 的安全模型被设计为基于角色的访问控制,其中每个角色可以是一组用户。 地位 哲学 只做一件事的通用库,没有任何功能。 安装 在您的Gemfile包含 gem : gem 'acts_as_privilege' 并运行bundle命令。...
Rails是Ruby on Rails的简称,它是一个基于MVC(Model-View-Controller)架构模式的开源Web应用程序框架。Rails强调“约定优于配置”和“DRY(Don't Repeat Yourself)”原则,大大简化了开发流程。它内置了丰富的...
Ruby on Rails(简称Rails)是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用的开发过程,提高开发效率。在构建学生选课系统时,Rails的强大功能和简洁语法...
- **权限控制**:实现基于角色的访问控制(Role-Based Access Control, RBAC)。 ##### 4. 性能优化 - **缓存策略**:使用页面级缓存、片段缓存等技术提高响应速度。 - **数据库优化**:合理设计数据库表结构、...
在IT行业中,Rails框架是Ruby on Rails的简称,它是一个基于Ruby编程语言的开源Web应用程序框架,遵循MVC(模型-视图-控制器)架构模式。这个“Rail.zip”文件可能是一个包含Rails项目的压缩包,其中可能包含了示例...
在描述中提到的"行政"部分,可能是Rails应用中的一个控制器(Controller)或模型(Model),用于处理与管理员或行政相关的任务,比如用户管理、权限控制等。在Rails的MVC(Model-View-Controller)架构中,控制器...