Authentication is a must have feature for every system. Every system administrator needs to give an identity to the ones using their system. Which leads us, developers, to make this repetitive process something easier to implement and reuse every now and then on any application that may need user login.
I've seen many "authentication frameworks" which encapsulate simple verification routines into assemblies, that can be implemented as easy as just creating a reference and running a sql script against the DB. What the heck! Even I made one of those and felt 1337 because of my glorious creation. But! That was until I meet the provider model, which reduced the greatness of my crappy "framework" or I may say, reinvention of the wheel.
The provider model involves many other things that go a lot further than just user authentication, resource permissions, etc. For now I'll address the ones related to user management and their default implementation.