Ok, takže používám Servlet API v Javě a chci si udělat autentifikaci a autorizaci. Neobjevuju kolo, Servlety jsou snad normální věc. Umožňují mi uložit si Session - nevím jak, prostě to mají zmáknuté.
Pointa je, že používám čistě Servlety bez frameworku typu Spring a Javy EE. No a chci si udělat přihlašování.
Takže něco jako je toto:
public static boolean authenticate(String username, String password) {
if (username.isEmpty() || password.isEmpty()) {
return false;
}
User user = userDao.getUserByUsername(username);
if (user == null) {
return false;
}
String hashedPassword = BCrypt.hashpw(password, user.getSalt());
return hashedPassword.equals(user.getHashedPassword());
}
public static Route handleLoginPost = (Request request, Response response) -> {
Map<String, Object> model = new HashMap<>();
if (!UserController.authenticate(getQueryUsername(request), getQueryPassword(request))) {
model.put("authenticationFailed", true);
return ViewUtil.render(request, model, Path.Template.LOGIN);
}
model.put("authenticationSucceeded", true);
request.session().attribute("currentUser", getQueryUsername(request));
if (getQueryLoginRedirect(request) != null) {
response.redirect(getQueryLoginRedirect(request));
}
return ViewUtil.render(request, model, Path.Template.LOGIN);
};
Jak je vidět, je to v principu velice jednoduché. Nicméně třeba takový Spring Security je několika-megabajtová hydra.
Proto mě zajímá problematika autentifikace. Chci si ujasnit, jestli je pro 9/10 případů v pořádku použít jednoduchý způsob autentifikace, a nebo je třeba vymýšlet nějaké další složitosti.
Nedělám SW pro banku dpč.