【问题标题】:Data Model Design and Permissioning数据模型设计和许可
【发布时间】:2018-10-06 23:03:56
【问题描述】:

我正在创建structured interviewing 应用程序。

在高级我的 DataModal 看起来像:

Class Question
   id: String
   type: ENUM => Technical, NonTechnical
   title: String
   description: String

Class Technical
   Topic: String
   Subtopic: String
   List <Example> 
   List <Solution>

Class NonTechnical 
   List <Solution> 

我正在使用 Hibernate/JPA 和 MS Sql。这里的问题是

  1. 我想要一组不同的技术和非技术问题的读/写/更新/删除权限。就像只允许开发人员对技术问题进行写访问,并且只允许 HR 对非技术问题进行写访问等。是否可以使用上面的数据模式来实现这一点,或者我应该将技术和非技术问题保存在两个不同的数据库中?

  2. Hibernate 是正确的选择还是我应该使用 Mybatis?

感谢这里的领导!

谢谢!

【问题讨论】:

  • 如果您使用的是 Java,那么我建议您查看 Spring Security for Roles and Permissions

标签: java sql-server hibernate data-modeling


【解决方案1】:

首先,您需要区分应用程序工作流程与权限。通常,权限侧重于允许对资源进行不同类型的访问(例如,“组 x 的成员对文件 y 具有读取权限,但没有写入权限”)。权限通常在应用程序本身之外进行管理。

另一方面,工作流说“向 x 类型的用户显示应用程序的以下视图,而 ya 类型的用户显示不同的视图” - 例如,Stack Overflow 向具有高声誉的用户显示一组不同的工具.这是基于权限的,但通常是“嵌入”到应用程序中。

我不知道你的正确答案,但我会在决定任何特定框架之前考虑这一点。

回答你的第一个问题:

是否可以使用上面的数据模式来实现这一点,或者我应该 将技术问题和非技术问题保存在两个不同的数据库中?

不,您的数据模型不完整。它没有显示您如何建模用户 - 您的应用程序如何知道登录的用户类型?绝对没有理由将不同类型的问题存储在不同的数据库中 - 使用数据库级别的权限来强制执行应用程序级别的安全性并不常见。

Hibernate 是正确的选择还是我应该使用 Mybatis?

选择与您描述的问题无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2015-06-19
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多