使用 Snap 进行身份验证:多次使用一个 snaplet
Authentication with Snap: Using a snaplet several times
我正在使用 Snap 构建一个需要对员工和客户进行身份验证的 Web 应用程序。到目前为止,我正在使用 snaplet-postgresql-simple
提供的 auth snaplet 来验证来自数据库中相同 table 的两种类型的用户。
因此初始化代码看起来像这样:
s <- nestSnaplet "sess" sess $ initCookieSessionManager sessionKeyfile "sess" Nothing (Just sessionTimeout)
db <- nestSnaplet "pg" pg Pg.pgsInit
a <- nestSnaplet "auth" auth $ initPostgresAuth sess db
出于以下原因,我正在考虑将这两种类型的用户分成两个 table:
- 与每种类型的用户相关的信息(即列)实际上是不同的(例如,我不需要知道员工的名字和姓氏)
- 我想让员工在不登录前端的情况下对后端进行身份验证(我想我需要单独的 cookie)
- 我认为如果两种类型的用户分开 tables
,安全性会有所提高
我正在考虑为 postgresql-simple 和会话使用两个小片段实例。
初始化代码看起来像这样:
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 实例?
或者我的问题有更好的解决方案吗?
我不会使用两个实例。我会使用一个实例,其中一个用户代表两者共有的任何内容,然后添加一个用户类型列并将额外信息放在与外键链接的其他表中。
我正在使用 Snap 构建一个需要对员工和客户进行身份验证的 Web 应用程序。到目前为止,我正在使用 snaplet-postgresql-simple
提供的 auth snaplet 来验证来自数据库中相同 table 的两种类型的用户。
因此初始化代码看起来像这样:
s <- nestSnaplet "sess" sess $ initCookieSessionManager sessionKeyfile "sess" Nothing (Just sessionTimeout)
db <- nestSnaplet "pg" pg Pg.pgsInit
a <- nestSnaplet "auth" auth $ initPostgresAuth sess db
出于以下原因,我正在考虑将这两种类型的用户分成两个 table:
- 与每种类型的用户相关的信息(即列)实际上是不同的(例如,我不需要知道员工的名字和姓氏)
- 我想让员工在不登录前端的情况下对后端进行身份验证(我想我需要单独的 cookie)
- 我认为如果两种类型的用户分开 tables ,安全性会有所提高
我正在考虑为 postgresql-simple 和会话使用两个小片段实例。
初始化代码看起来像这样:
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 实例? 或者我的问题有更好的解决方案吗?
我不会使用两个实例。我会使用一个实例,其中一个用户代表两者共有的任何内容,然后添加一个用户类型列并将额外信息放在与外键链接的其他表中。