0

我想创建一个数据库用户,它将使用我的预定义函数(login(pass, login)、get_users_you_are_in_charge_off(login, pass) 等)。

因为这应该对任何人开放,所以我想创建一个 db 用户/组角色,只允许该用户执行我的预定义功能。

问题是这些函数使用 SELECT、UPDATE、INSERT。当我只授予执行这些功能的权利时,他们会抛出错误,他们没有这样做的权限。

有任何想法吗?(也许我可以静态地改变函数中的角色?)

// 回答一些评论 第一条评论:好的,我会看看它,如果它可以帮助我,我会回复。谢谢。好的,谢谢你的回答,这正是我需要的。感谢用户“plundra”!

第 2 条评论:我已经有一个表或用户(使用他们的登录名)。但是,如果我创建一个函数 checkLogin(name, pass),则该函数需要从表 users 中进行选择。如果我不授予用户执行 SELECTS 的权利,它就行不通。如果我确实授予权限,那么用户可以从用户中执行 SELECT *;看看密码是什么。

好的,感谢您的回答,第一条评论正是我所需要的。感谢用户“plundra”!

4

2 回答 2

1

答案是,不要在数据库中存储密码。

相反,存储盐和密码哈希(两个文本字段)。

创建新用户时,您会随机创建盐,用它对他们选择的密码进行哈希处理,然后存储哈希值。

要对某人进行身份验证,请获取他们输入的密码、存储在他们用户记录中的盐,通过您的哈希算法(SHA1 等)运行他们,并将其与存储的哈希进行比较。

虽然概念很简单,但细节可能会咬你一口,因此值得使用其他人的代码

于 2010-11-10T18:48:27.297 回答
0

查看 postgresql.org/docs/current/static/sql-createfunction.html 上的“SECURITY DEFINER” – plundra

用户 plundra 回答。这就是我需要的,谢谢:)

于 2010-11-10T19:00:30.963 回答