19. Authentication [toc] 🎗️ TODO: What about OAuth? 19.1. Introduction to Authentication 19.1.1. What Is Authentication? 19.1.2. Flow for Simple Authentication 19.1.2.1. Sessions and Cookies 🍪 19.1.3. A Note On Authentication In Spring 19.1.4. Check Your Understanding ✅ 19.2. Hashing Passwords 19.2.1. Two-Way Encryption 19.2.2. One-Way Encryption 19.2.3. Password Verification With Hashes 19.2.3.1. Hashing Isn’t Perfect 19.2.4. Which Hash Function Should I Use? 19.2.5. Check Your Understanding ✅ 19.3. Creating a User Model 19.3.1. A User Model 19.3.2. Hashing Passwords 19.3.3. Creating the UserRepository 19.3.4. Check Your Understanding ✅ 19.4. Login and Registration Forms 19.4.1. Creating AuthenticationController 19.4.2. Session-Handling Utilities 19.4.3. Form DTOs 19.4.4. The Registration Form 19.4.5. The Login Form 19.4.6. Logging Out 19.4.7. Check Your Understanding ✅ 19.5. Filtering Requests 19.5.1. Request Filters in Spring 19.5.2. Creating AuthenticationFilter 19.5.2.1. Overriding preHandle 19.5.2.2. Creating a Whitelist 19.5.3. Registering the Filter With Spring 19.5.4. Check Your Understanding ✅ 19.6. Studio: TechJobs Authentication 🎙️ 19.6.1. The Starter Code 19.6.2. Create the User Model 19.6.3. Create the Login and Registration Forms 19.6.4. Filter Requests #Java