laravel/fortify
Laravel Fortify is a frontend-agnostic authentication backend for Laravel, powering registration, login, password reset, and two-factor authentication for Laravel starter kits and your own custom UI.
Model::encryptUsing for app-key rotation, token revocation on password change, configurable rate limiting/lockout, and a documented security disclosure policy are all pre-built answers to questions that appear in SOC 2 / pen-test / vendor-security reviews.Features::canUpdatePasswords(), 2FA enable/disable, profile updates, recovery-code regeneration) let a PM turn capabilities on per plan tier or per cohort instead of shipping everything at launch.Adopt when:
Look elsewhere (or scope differently) when:
For executives — the one-paragraph version:
Authentication is a mandatory, security-sensitive, non-differentiating feature that we would otherwise build and maintain forever. Laravel Fortify is the official, MIT-licensed, frontend-agnostic auth backend for Laravel, maintained by the framework's own team and used by Laravel's starter kits. Adopting it removes weeks of initial build and, more importantly, removes ongoing ownership of password reset, email verification, two-factor authentication, recovery codes, rate limiting, and passkey support. There is no license cost, no vendor lock-in (the code lives in our repository and we can fork it), and no data leaves our infrastructure. It also de-risks the roadmap: passkeys and multi-client/API auth become configuration and UI work rather than re-architecture.
For engineering — the practical case:
encryptUsing, canUpdatePasswords(), and PHP 8.5 / Laravel 13 compatibility. It is not a stagnant dependency.Trade-offs to state up front (credibility, not hedging):
Suggested success criteria for the decision: auth shipped behind a feature flag within the current cycle; 2FA and passkey availability exposed to the intended cohorts; zero bespoke code handling credential verification or secret storage; and an auth layer that survives the next Laravel major with configuration changes only.
How can I help you explore Laravel packages today?