基于用户过滤数据库检索

Posted

技术标签:

【中文标题】基于用户过滤数据库检索【英文标题】:Filtering database retrieval based on user 【发布时间】:2021-06-18 16:32:20 【问题描述】:

我制作了一个 Shiny 仪表板,它通过 shinymanager 使用身份验证来允许用户访问仪表板。仪表板根据用户从数据库中提取值;某些用户将根据所有数据在仪表板中显示结果,而其他用户只会看到与自己相关的数据(他们的登录凭据将与他们被指定为管理员或普通用户的表交叉引用)。因此,虽然我知道这是一个广泛的问题,但是:最简单的方法是什么?

【问题讨论】:

【参考方案1】:

没有一点代码几乎不可能回答,但一般模式可能如下(假设您使用例如DBI 接口进行数据库检索):

server <- function(input, output, session) 

   is_admin_user <- reactive(
      assigned_role <- user_table %>% 
         filter(user == input$user)
         pull(role)
      assigned_role == "admin"
   )

   get_data <- reactive(
      sql_tbl <- tbl(con, my_table_name)
      if (!is_admin_user) 
         sql_tbl <- sql_tbl %>%
            filter(!user_grp %in% "for admin eyes only"))
      
      sql_tbl %>%
         collect()
   )

   # ...

整个想法是,在您的数据拉动中,您根据用户权限有条件地过滤数据(在我的玩具示例中,仅根据 admin / non admin - 但当然您可以做任何您想做的高级事情)。有了这个想法,用户只能看到他/她眼中的数据。

如前所述,如果没有任何有效代码,就很难有更多帮助。

【讨论】:

以上是关于基于用户过滤数据库检索的主要内容,如果未能解决你的问题,请参考以下文章

基于协同过滤的推荐系统

基于学习排序的并行协同过滤推荐算法

利用用户行为数据——基于Spark平台的协同过滤实时电影推荐系统项目系列博客

ML之CF:基于MovieLens电影评分数据集利用基于用户协同过滤算法(余弦相似度)实现对用户进行Top5电影推荐案例

如何根据具有特定条件的特定记录的用户权限有效过滤大量记录?

Android从谷歌帐户检索用户国家