Myślę, że dopasowanie haseł należy do interfejsu klienta i nigdy nie powinno docierać do serwera (warstwa DB jest już za duża). Lepiej dla wygody użytkownika, aby nie mieć połączenia z serwerem tylko po to, aby powiedzieć użytkownikowi, że 2 ciągi znaków są różne.
Co do cienkiego kontrolera, gruby model... wszystkie te srebrne kule powinny zostać wystrzelone w twórcę. Żadne rozwiązanie nie jest dobre w żadnej sytuacji. Pomyśl o każdym z nich we własnym kontekście.
Przedstawienie tutaj pomysłu na gruby model sprawia, że używasz funkcji (walidacja schematu) do zupełnie innego celu (dopasowywanie haseł) i uzależnia Twoją aplikację od technologii, z której obecnie korzystasz. Pewnego dnia będziesz chciał zmienić technologię i dojdziesz do czegoś bez walidacji schematu… a potem będziesz musiał pamiętać, że część funkcjonalności Twojej aplikacji opierała się na tym. I będziesz musiał przenieść go z powrotem na stronę klienta lub na kontroler.