2015-07-28 15 views
0

這可能是一個簡單的問題;道歉,如果這個問題是基本的東西。使用PostgreSQL的用戶帳號

我正在嘗試爲使用Node.js的網站創建一個帳戶系統(這只是爲了學習!),而且我已經將表單,Postgres連接等引入到了一起。不過,我現在想知道我應該如何存儲有關用戶的信息,例如用戶名和密碼。

我知道,專門用於Postgres數據庫的用戶帳戶可以使用CREATE USER name WITH PASSWORD '';被創建,但我不知道我是否應該:

  1. 創建用於訪問數據庫的帳戶,並返回一個包含表 用戶信息;這是Postgres賬戶系統的設計目的,還是僅用於數據庫管理?
  2. 創建上面的命令 用戶每當有人簽署了起來,然後無論是在 另一個表中添加額外的信息。

感謝您的幫助。

回答

1

在你對誰報你不應該爲每個用戶進行單獨ROLE稍微控制一個典型的Web應用程序。相反,您的Web應用程序有一個或幾個角色,並且用戶帳戶信息存儲在常規表中。

這樣,您就可以使用標準的數據庫安全性角色的Web應用程序(你的代碼,基本上)正在使用,而你的應用程序邏輯決定了你的用戶可以看到或做。

標準數據庫安全功能包括可訪問表以查看,插入,修改或刪除數據的內容。當您的應用程序的每個用戶都擁有數據庫角色時,他們需要設置適當的權限。你可以用組角色來管理它,但是你會遇到其他問題。舉個例子:你有1000個用戶,他們的個人信息都存儲在表user_details中。這些用戶需要能夠查看和修改自己的數據,但不能夠查看和修改其他999個用戶的數據。您可以用一個視圖來設置它,該視圖將數據過濾爲屬於數據庫會話的CURRENT_USER,但這需要大量的維護。讓您的Web應用程序擁有單一帳戶並讓您的業務邏輯進行過濾更簡單 - 也更安全 - 。

我建議你閱讀database roles和安全性,以正確理解如何建立一個安全的環境。

+0

抱歉挑剔,我是PSQL新手!你提到的標準數據庫安全特性是什麼?Q犧牲安全性的選項2,以什麼方式做?謝謝你的幫助! (編輯:道歉,如果您的安全是指GRANT ACCESS的單一角色的權限控制,那麼我明白:)) –

+0

@NickBull查看更新的答案 – Patrick

+0

解決我的問題,然後一些!非常感謝你的幫助Patrick –