2015-06-11 3 views
1

Я следил за большинством руководств на веб-сайте luminusweb.net, настраивая систему баз данных, используя новое приложение + h2. То, что я в настоящее время отражает настройку гостевой книги, как показано в уроке. Теперь мне интересно, как я могу получить доступ к определенным записям в таблице миграции. В частности, я пытаюсь ограничить доступ к веб-страницам (системе входа) на основе записей внутри таблицы.Доступ к базе данных Luminus

ответ

2

Цель файла миграции - создать таблицы в вашей базе данных. Чтобы получить доступ к этим таблицам, вам нужно будет написать запросы в файле, расположенном здесь: your_project> resources> 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 "[email protected]"}) 

будет возвращать ленивую последовательность вроде этого:

[{"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 "[email protected]"})) 

Параметр идентичности будет в каждом запросе, пока сеанс не умирает (30 минут по умолчанию) или перезаписать. На ваших страницах вы можете проверить buddy.auth/authenticated? на запросы и перенаправить на страницу с ошибкой или что угодно, если она вернет false. В настоящее время я пишу учебник для webapps с использованием Luminus, я обновлю этот ответ, когда он будет доступен.

Смежные вопросы