2017-03-16 23 views
0

我正在構建一個需要對工作人員和客戶進行身份驗證的Snap的Web應用程序。到目前爲止,我使用snaplet-postgresql-simple提供的認證snaplet從數據庫中的同一個表中認證兩種類型的用戶。使用Snap進行身份驗證:使用snaplet幾次

初始化代碼因此看起來是這樣的:

s <- nestSnaplet "sess" sess $ initCookieSessionManager sessionKeyfile "sess" Nothing (Just sessionTimeout) 
db <- nestSnaplet "pg" pg Pg.pgsInit 
a <- nestSnaplet "auth" auth $ initPostgresAuth sess db 

我考慮了兩種類型的用戶分成兩個表這些原因:

  • 每種類型的相關信息用戶(即列)實際上是不同的(例如,我不需要知道職員的姓名)
  • 我想允許員工對後臺進行身份驗證而不登錄前端(我需要單獨的cookie,那麼,我猜)
  • 我想,如果這兩種類型的用戶都在不同的表

我使用的snaplets的兩個實例PostgreSQL的,簡單的考慮安全性可能會受益和會議。然後

初始化代碼會是這個樣子:

s1 <- nestSnaplet "sess1" sess1 $ initCookieSessionManager sessionKeyfile "sess1" Nothing (Just sessionTimeout) 
s2 <- nestSnaplet "sess2" sess2 $ initCookieSessionManager sessionKeyfile "sess2" Nothing (Just sessionTimeout) 
db <- nestSnaplet "pg" pg Pg.pgsInit 
a1 <- nestSnaplet "auth1" auth1 $ initPostgresAuth sess1 db 
a2 <- nestSnaplet "auth2" auth2 $ initPostgresAuth sess2 db 

這有可能使用像這樣的snaplet的多個實例? 或者我的問題有更好的解決方案嗎?

回答

0

我不會使用兩個實例。我將使用一個用戶表示任何一個通用的實例,然後添加一個用戶類型列,並將其他信息放在與外鍵鏈接的其他表中。