MvcAccount is a substitute for MembershipProvider designed for ASP.NET MVC, that provides more features and the ability to store username/password and other related data in your own database.
Using NuGet: Install-Package MvcAccount
- Sign In/Out: With account lock out after max. invalid attempts.
- ResetPassword: Sends email with link to enter new password.
- ChangePassword: User must sign in first.
- ChangeEmail: With optional verification (sends email with link).
- None: Passwords are stored in clear text.
- PBKDF2: Passwords are hashed with the RFC 2898 algorithm (Recommended). Implemented by Crypto, also used by SimpleMembershipProvider.
- SHA1: Passwords are encrypted one-way using the SHA1 hashing algorithm (reuses SqlMembershipProvider implementation).
- MachineKey: Passwords are encrypted using the encryption settings determined by the machineKey element configuration (reuses SqlMembershipProvider implementation).
- Custom: Provide your own implementation.
- MembershipProvider: Although MvcAccount is a substitute for MembershipProvider there a many components out there that work against this API, so MvcAccount also provides an implementation. The only functions currently implemented are:
- ValidateUser (useful if your application implements other functions that require username/password verification).
- GetUser (all overloads, this allows you to get user information from your application without a direct dependency on MvcAccount).
- Bootstrap: Views use Bootstrap markup and classes (optional, you are not required to use Bootstrap).
MvcAccount is fully localized in the following languages:
- English (en)
- Spanish (es)
- Finnish (fi)
- Portuguese (pt)
MvcAccount doesn't provide the following functionality:
- Anything related with roles or claims.
- External login providers (OAuth, OpenID).
Code hosted on GitHub. Releases available via NuGet.
This project was originally hosted on CodePlex, source code of earlier releases remain available there for the time being.
The new codebase was restructured, although it has the same functions, it's not backwards compatible with earlier versions. The motivation is explained on this post.