Luminus数据库访问

时间:2015-06-11 16:21:24

标签: database login clojure migration luminus

我已经关注了luminusweb.net网站上的大部分教程,使用+ h2新应用程序设置了数据库系统。我现在所拥有的内容就像教程中所示的那样反映了留言簿设置。我现在想知道如何访问迁移表中的特定条目。更具体地说,我试图根据表格内的条目限制访问网页(登录系统)。

1 个答案:

答案 0 :(得分:2)

迁移文件的目的是在数据库中创建表。要访问这些表,您必须在此处的文件中编写查询:your_project>资源> sql> QUERIES.SQL

在这里你应该编写查询,Luminus website上有几个例子。当您看到带有半色列的参数时,这意味着当您在程序中调用这些查询时,必须传递包含这些参数的映射。例如:如果您有此查询:

-- name: accounts_for_user
-- retrieve all accounts a user has access to and the associated rights
SELECT account_name, admin
FROM accounts_users
WHERE email = :email;

电话:

(db/accounts_for_user {:email "laurent@test.com"})

会返回一个像这样的惰性序列:

[{"account_name":"account1","admin":false},
{"account_name":"account2","admin":true},
{"account_name":"account2","admin":true}]

然后,如果您想根据数据库中的内容限制对特定页面的访问,可以选择几个选项。 Buddy auth library提供了一些选项,最容易使用的是会话一。首先,当用户输入正确的密码时,您可以在任何请求中将其标识符注入:session:identity。例如

(-> (redirect "/accounts-list")
    (assoc :session {:identity "user@test.com"}))

身份参数将在每个请求中,直到会话终止(默认为30分钟)或您覆盖它。在您的页面中,您可以对请求进行buddy.auth/authenticated?测试,并在返回false时重定向到错误页面或任何您喜欢的页面。我目前正在使用Luminus编写webapps教程,我会在可用时更新这个答案。