Anwendungsszenarien
In letzter Zeit gibt es immer Menschen in der Community, die Artikel mit kleinen Anzeigen veröffentlicht haben, die die Gemeinschaftsatmosphäre ernsthaft beeinflussen. Ich bin so wütend! Für diese Art von Benutzern sollte es dauerhaft blockiert werden!
Das Sicherheitsrahmen der Gemeinschaft verwendet Frühlingssicherheit und Frühlingssitzung, und der Anmeldestatus ist 30 Tage lang gültig. Die Sitzungsinformationen existieren in Redis. Wie kann man mit diesen unehrlichen Benutzern anmutig umgehen?
Teilen Sie zunächst einfach die Berechtigungen des Benutzers:
Blockieren Sie dann den angegebenen Benutzer (rollen_user -> rollen_black) und zwingen Sie den Benutzer zum Beenden (löschen Sie die Sitzungsinformationen des Benutzers in Redis).
Projektbezogene Abhängigkeiten und Konfiguration
MAVEN -Abhängigkeiten
<!-Security-> <De vorstellen> <gruppe> org.springFramework </abhängig> <!-Spring Session Redis-> <De vor Ort> <gruppe> org.springframework
Konfigurationsanwendung von Frühlingssitzungsrichtlinien
# Auslassen von Redis Connection Related Configuration hier Frühling: Sitzung: Store-Typ: Redis
Beispiele für den Frühlingssicherheits -Konfigurationscode
@EnableWebSecurityPublic Class WebSecurityConfig erweitert WebSecurityConFigurerAdapter {@Override Protected void configure (httpsecurity http) löst Ausnahme aus {http .authorizeRequests () .antmatchers ("/ublection/**"). Authenticated (). Authenticated (). Authenticated (). .AntMatchers ("/Manager/**"). }}Erzwungene Beenden zuweisen der Benutzeroberfläche zugewiesen
import com.spring4all.bean.responsebean; import com.spring4all.service.userservice; import lombok.allargSconstructor; import org.springFramework org.springframework.session.data.redis.redisoperationsSessionRepository; import org.springframework.web.bind.annotation.getMapping; import org.springframework org. erweitert Sitzung> SessionRepository; private endgültige RedisoperationSessionRepository RedisoperationsSessionRepository; private Final UserService UserService; /*** Verwalten Sie das Abmelden des angegebenen Benutzers* @Param UserID -Benutzer -ID* @Return Benutzersitzungsinformationen*/@preauthorize ("HasRole ('Manager')") @getmapping ("/Manager/logout/{userId}") public responseBean -Daten (@PathVariable () Long -Benutzern. String indexname = userService.getPrincipalnameIndexName (userID); // Abfragen Sie die Sitzungsinformationen des Benutzers, der Rückgabewertschlüssel ist SessionID -Karte <String,? erweitert Sitzung> Benutzer // Die Sitzungsinformationsliste des Benutzers entfernen <string> SessionIDS = new ArrayList <> (userSessions.keyset ()); für (String Session: SessionIDS) {RedisoperationsSessionRepository.DeletebyId (Sitzung); } return responseBean.success (Benutzer }} Beschreibung Indexname ist der Rückgabewert von Principal.getName ().
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.