1. Security. Small non-obvious mistakes are easy to make and very important.
2. High visibility. Risky, and if it goes wrong it's a major thing your customers notice.
3. Dry. It's just not particularly interesting for me, it's certainly solved in other frameworks (e.g. devise). I'm aware this last point is extremely selfish of me, however.