#authentication #haskell #yesod
Вопрос:
Я пишу веб-приложение для личного использования с Yesod. Я не хочу аутентификации и входа в систему. Каков наилучший способ достичь этого?
- удалите библиотеку проверки подлинности из приложения
- используйте скрытого пользователя по умолчанию, который автоматически входит в систему при запуске (Auth.dummy?)
- или что-то еще….
Ответ №1:
Предполагая, что вы используете последнюю версию сайта с каркасом, вы должны быть в состоянии найти src/Foundation.hs
определение isAuthorized
. Замените все определение на:
isAuthorized _ _ = return Authorized
или даже полностью удалить его, так как приведенное выше определение используется по умолчанию.
Этого должно быть достаточно, чтобы разрешить доступ ко всем страницам. Затем выполните поиск в своем коде для использования maybeAuth*
и requireAuth*
функций. Убедитесь, что используемые страницы maybeAuth*
работают должным образом, если они вернутся Nothing
. Удалите любое использование requireAuth*
и любые зависимости от его возвращаемого значения.
После этого вы можете очистить ненужный код, но это совершенно необязательно:
- В
Foundation.hs
, ты можешь:- удалить
Yesod.Auth.Dummy
иYesod.Auth.OpenId
импортировать - удалите определение из
muser <- maybeAuthPair
defaultLayout
- удалите страницы входа/выхода/профиля с панели навигации (
menuItems
) - удалите
authRoute
определение вinstance Yesod App
- удалите
AuthR
иProfileR
изbreadcrumb
- удалите
instance YesodAuth App
определениеisAuthenticated
иinstance YesodAuthPersist App
- удалить
- Войдя
NoFoundation.hs
, вы можете удалитьYesod.Auth
импорт. - В
Settings.hs
, удалитеappAuthDummyLogin
поле и ссылку на него вinstance FromJSON AppSettings
- В
config/routes.yesodroutes
разделе удаление/auth
и/profile
маршруты - Удалить
src/Handler/Profile.hs
иimport Handler.Profile
удалитьApplication.hs
. - Удалите все оставшиеся ссылки на функции или ссылки на маршрут.
maybeAuth*
ProfileR