Ruby on rails 对/系统文件的用户权限
实现以下目标的最佳途径是什么 假设在我的rails应用程序中有文件夹:Ruby on rails 对/系统文件的用户权限,ruby-on-rails,ruby,rack,middleware,Ruby On Rails,Ruby,Rack,Middleware,实现以下目标的最佳途径是什么 假设在我的rails应用程序中有文件夹: /system/cms/attachments /system/attachments/ /system/attachments/Project /system/attachments/Meeting 文件正在上载到这些文件夹中,并且可以通过web访问。现在我想添加一些权限来访问它们。如果有人试图访问myapp/system/attachments/meetings/doc1.docx我想确保他们通过了应用程序的身份验证。
/system/cms/attachments
/system/attachments/
/system/attachments/Project
/system/attachments/Meeting
文件正在上载到这些文件夹中,并且可以通过web访问。现在我想添加一些权限来访问它们。如果有人试图访问myapp/system/attachments/meetings/doc1.docx
我想确保他们通过了应用程序的身份验证。对于另一个myapp/system/attachments/Project/doc2.docx
我的想法是设置一些机架中间件来实现这一点,当我这样做时,我的中间件似乎可以处理除is/系统之外的所有请求
是否有可以更改的配置设置,以允许中间件也与/系统路径交互
有没有更好、更简单的方法来完成我想要做的事情?
本质上是一个路由或其他东西,如果路径类似于“/system/attachment/project/”,请运行此逻辑块。这种逻辑可能有些复杂,需要访问模型和环境内容。然后,它将最终返回文件内容的响应,或者失败/重定向到权限不足
感谢您在这方面的想法和对话。谢谢。通过将上传内容与模型关联,并将权限应用于将用于启动下载的模型,可以更好、更简单地实现这一点 实施概述
- 用于上载文件并将其与模型关联,例如
附件
- 这将方便用户上传文件。每次上传都会创建一条记录。该模型将存储文件名,您可以调用
获取要为用户下载的文件的url@attachment.url
- 这将方便用户上传文件。每次上传都会创建一条记录。该模型将存储文件名,您可以调用
- 用于实现对
模型的权限附件
- 用户将能够上传文件,或者管理员可以手动上传文件
- 每次上载都会将一条
记录保存到数据库中,并引用文件上载到的路径(回形针让您配置此路径,以便将其设置为/system路径)附件
- 向用户显示
附件的索引,即
,当用户单击下载时,您的应用程序将在GET/attachments
GET/attachments/1
- 您的控制器将找到它:
@attachment=attachment.find params[:id]
- 现在您可以执行权限检查:
(这将基于)authorize!@attachment,:read
- 您还可以选择仅显示允许用户查看的附件:
请参见@attachments=attachment.accessible\u by current\u功能
- 如果出现
错误(因为用户没有此附件的权限),则捕获错误并呈现flash消息或其他内容,否则AccessDenied
- 然后,您的控制器将使用或启动下载,例如
send_file@attachment.url、filename:@attachment.attachment_file\u name、disposition:“attachment”