使用PostgreSQL的用户帐户

时间:2015-07-28 10:24:02

标签: postgresql authentication

这可能是一个简单的问题;如果这个问题是基本的东西,请道歉。

我正在尝试使用Node.js为网站创建一个帐户系统(这只是为了学习!)我已经把表格,Postgres连接等组合在一起了。但是,我现在想知道如何我应该存储有关用户的信息,例如用户名和密码。

我知道可以使用CREATE USER name WITH PASSWORD '';创建Postgres数据库的用户帐户,但我不确定是否应该:

  1. 创建一个用于访问数据库的帐户,并返回一个表 包含用户信息;这是Postgres中的帐户系统的设计目的,还是只用于数据库管理?
  2. 使用上述命令创建用户 每当有人注册,然后在其中添加额外信息 另一张桌子。
  3. 感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在典型的网络应用程序中,您几乎无法控制谁注册,您不应为每个用户单独ROLE。相反,您的Web应用程序有一个或几个角色,用户帐户信息存储在常规表中。

通过这种方式,您可以将标准数据库安全性用于Web应用程序(您的代码基本上)正在使用的角色,而您的应用程序逻辑可以确定用户可以查看或执行的操作。

标准数据库安全功能包括可以访问表以查看,插入,修改或删除数据的内容。当应用程序的每个用户都具有数据库角色时,他们需要设置适当的权限。您可以使用组角色进行管理,但是您还有其他问题需要处理。例如:您有1,000个用户,他们都将自己的个人详细信息存储在表user_details中。这些用户需要能够查看和修改自己的数据,但不能查看和修改任何其他999用户的数据。您可以使用一个过滤数据的视图来设置它,以便属于数据库会话的CURRENT_USER,但这需要大量的维护。只使用Web应用程序的单个帐户并让业务逻辑进行过滤更容易 - 也更安全。

我建议你阅读database roles和安全性,以正确理解如何建立安全的环境。