基于用户过滤数据库检索
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电影推荐案例