Describe Middleware, Sessions (as we know them in express), bcrypt and JWT. What does bcrypt do in order to prevent attacks? What are the three parts of the JSON Web Token?