Veil: 简易无密码认证系统搭建教程
1. 项目目录结构及介绍
Veil 是一个专为 Phoenix 框架设计的简易无密码认证库,旨在提供无需密码的登录体验。以下是项目的主要目录结构概览及其功能介绍:
-
config
: 包含应用的配置文件,如config.exs
,在这里定义Veil的相关配置。 -
lib
: 核心代码存放区,包括Veil的行为和逻辑实现。 -
mix.exs
: 项目元数据文件,定义了依赖项、版本信息等。 -
priv/templates
: 存放应用程序可能使用的模板文件。 -
test
: 单元测试和集成测试的区域,用于验证Veil的各个功能组件。 -
README.md
: 项目说明文档,提供了安装和基本使用指南。
2. 项目的启动文件介绍
虽然Veil本身不直接提供“启动文件”供用户修改,但它的集成过程涉及修改或添加到你的Phoenix应用中的一些关键文件,尤其是:
- 修改
mix.exs
:添加Veil作为依赖,并在应用启动时通过mix veil.add
命令将其集成。 - 配置
config/config.exs
:这里需配置Veil,例如设置电子邮件服务API密钥、会话过期时间等。 - 在你的Phoenix应用中,通常不需要直接触发动态启动文件,但可能要更新路由器(
router.ex
)和相关控制器以启用认证插件。
3. 项目的配置文件介绍
在你的Phoenix应用的config/config.exs
文件中,Veil的配置块看起来像这样:
config :veil,
site_name: "你的网站名称",
email_from_name: "你的名字",
email_from_address: "yourname@example.com",
sign_in_link_expiry: 12 * 3_600, # 登录链接的有效时间
session_expiry: 86_400 * 30, # 会话有效时间
refresh_expiry_interval: 86_400, # 会话刷新间隔
sessions_cache_limit: 250, # 缓存的会话数限制
users_cache_limit: 100 # 缓存的用户数限制
config :veil, YourApp.Veil.Scheduler,
jobs: [
["@daily", [YourApp.Veil.Clean.Expired, []]]
]
config :veil, YourAppWeb.Veil.Mailer,
adapter: Swoosh.Adapters.Sendgrid,
api_key: "你的API密钥"
确保在生产环境中,敏感信息(如API密钥)应通过环境变量管理,而不是直接暴露在版本控制系统中。
以上是基于Veil项目的基本教程概述,详细部署和定制化步骤需参考项目内的README.md
文件和实际的Phoenix应用开发实践。