Ich habe zwei Tabellen "Benutzer" und "Rolle". Ich möchte eine Login-API erstellen (z. B. "/ Login"), die Benutzername und Passwort als JSON-Daten nehmen wird. Ich möchte überprüfen, ob die angegebene Berechtigung eine gültige Berechtigung ist, und wenn dies der Fall ist, möchte ich den Benutzer als authentifizierten Benutzer festlegen, sodass er die geschützten Ressourcen haben kann. Ich bin neu in Spring Boot Framework und ich weiß nicht, wie es geht. Ich habe die offizielle Dokumentation gelesen, kann aber keine Ressourcen finden. Könnte mir jemand dabei helfen?Wie authentifiziere ich den Benutzer manuell im Spring Boot?
Antwort
Sie haben eine Anzahl von Optionen, um eine solche Authentifizierung in Spring zu implementieren.
Fall 1: - Wenn Sie REST-Service bauen, dann können Sie Sicherheit in folgenden Weise implementieren:
i) - Sie Grund-Authentifizierung verwenden können, um Benutzer zu authentifizieren.
ii) - Sie können mit OAuth2 Ihren Benutzer authentifizieren und autorisieren.
Fall 2: Wenn Sie Web-Anwendung erstellen
i) - Sie Auth-Token (im Falle von SPA Einzelseite Anwendung verwenden können)
ii) - können Sie verwenden Session-basierte Authentifizierung (traditionelles Login-Formular und alle)
Ich denke, Sie sind im Anfänger-Modus, so werde ich Ihnen empfehlen, erstens zu verstehen, die Kontrolle der Benutzer Authentifizierung in der Web-App über Login-Formular . Also lass uns einen Code durchgehen.
Ich gehe davon aus, dass Sie ein grundlegendes Frühlingsprojekt festgelegt haben und jetzt implementieren Sie Sicherheit.
USER - Hibernate-Entity für Ihre Benutzertabelle; ROLLE - Hibernate Einheit für Ihre Rolle Tabelle
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomAuthProvider customAuthProvider;
@Override
protected void configure(HttpSecurity http) throws Exception {
// everyone is allowed tp view login page
http.authorizeRequests().antMatchers("/login").permitAll().and();
http.authorizeRequests().antMatchers("custom_base_path" + "**").authenticated().and().
formLogin().loginPage("/loginForm).loginProcessingUrl("/loginUser")
.usernameParameter("username").passwordParameter("password")
.defaultSuccessUrl("custom_base_path+ "home", true);
@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(customAuthProvider);
}
//CustomAuthProvider
@Component
public class CustomAuthentiationProvider implements AuthenticationProvider{
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String userid = authentication.getName();
String password = authentication.getCredentials().toString();
Authentication auth = null;
try {
//write your custom logic to match username, password
boolean userExists = your_method_that_checks_username_and_password
if(userExists){
List<Role> roleList= roleDao.getRoleList(userid);
if (roleList == null || roleList.isEmpty()) {
throw new NoRoleAssignedException("No roles is assigned to "+userid);
}
auth = new UsernamePasswordAuthenticationToken(userid, password,getGrantedAuthorities(roleList));
}
} catch (Exception e) {
log.error("error", e);
}
return auth;
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
public List<GrantedAuthority> getGrantedAuthorities(List<Role> roleList) {
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for (Role role : roleList) {
authorities.add(new SimpleGrantedAuthority(role.getRoleName());
}
return authorities;
}
}
HINWEIS:Bitte beachten Sie, diese Codes, die Logik der Authentifizierung zu verstehen. nicht als perfekter Code betrachten (nicht für Produktionsumgebung). Sie können mich jederzeit anpingen, ich werde Ihnen mehr dazu vorschlagen.
warum keine up votes? auch nach akzeptierter Antwort –
- 1. Wie konfiguriere ich manuell eine JdbcTemplate im Spring Boot?
- 2. Wie Start Flugweg manuell im Frühjahr Boot
- 3. Wie finde ich den aktuell angemeldeten Benutzer in Spring Boot?
- 4. Spring Security: Authentifizierung Benutzer manuell
- 5. Wie setze ich den ActiveMQ-Port im Spring Boot?
- 6. manuell eine Abhängigkeit im Frühjahr [Boot] lösen
- 7. Wie authentifiziere ich Benutzer in ONVIF?
- 8. Wie authentifiziere ich einen Benutzer mit AuthLogic
- 9. Kann ich @ConfigurationProperties manuell ohne den Spring AppContext laden?
- 10. @EnableTransactionManagement im Spring Boot
- 11. Filterbestellung im Spring-Boot
- 12. Wie authentifiziere ich einen Ruhezustand im Firebase?
- 13. Wie kann ich einen unbegrenzten Prozess im Spring Boot verwalten?
- 14. Globale Methodensicherheit im Spring Boot
- 15. Spring Boot WebSockets kann den aktuellen Benutzer (Principal) nicht finden
- 16. Verwenden Sie den Spring Boot Actuator ohne Spring-Boot-Anwendung
- 17. OAuth-Benutzerfreigabe im Spring-Boot überspringen OAuth2
- 18. Exportieren von Metriken im Spring Boot
- 19. Wie setze ich hibernate.format_sql im Spring-Boot ein?
- 20. Wie lies ich generierte Eigenschaftendateien im Spring Boot-Integrationstest?
- 21. Wie kann ich ALLEN Cache im Spring Boot entfernen?
- 22. Wie erstellt man Protokolldateien im Spring Boot?
- 23. Wie funktioniert @SpringBootApplication tatsächlich im Spring Boot?
- 24. Wie füge ich mehrere application.properties Dateien im Spring-Boot hinzu?
- 25. Wie steuert Spring Boot den Tomcat-Cache?
- 26. Wie authentifiziere ich einen Benutzer in Firebase-Admin in Nodejs?
- 27. Wie registriere ich den benutzerdefinierten Hibernate-Typ mit Spring Boot?
- 28. Wie konfiguriere ich mehrere MyBatis-Datenquellen im Spring Boot?
- 29. Wie ändere ich die Logback-Version im Spring Boot?
- 30. Wie lade ich Abfrageparameter im Spring Boot ab?
Verwenden Sie die rollenbasierte Autorisierung mit Federsicherheit. [this link] (http://www.baeldung.com/role-and-privilege-for-spring-security-registration) kann Ihnen in gewissem Maße helfen – harshavmb
@harshavmb vielen Dank. Ihr Link war sehr hilfreich. –