国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Computer-Tutorials Computerwissen Nutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework

Nutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework

Feb 18, 2024 pm 05:00 PM
spring security spring security spring mvc waynboot

Spring Security權(quán)限控制框架使用指南

Im Backend-Verwaltungssystem ist normalerweise eine Zugriffsberechtigungskontrolle erforderlich, um den Zugriff verschiedener Benutzer auf die Schnittstelle einzuschr?nken. Fehlen einem Benutzer bestimmte Berechtigungen, kann er auf bestimmte Schnittstellen nicht zugreifen.

In diesem Artikel wird das Waynboot-Mall-Projekt als Beispiel verwendet, um vorzustellen, wie das Berechtigungskontroll-Framework Spring Security in g?ngige Back-End-Verwaltungssysteme eingeführt wird. Die Gliederung lautet wie folgt:

waynboot-mall-Projektadresse: https://github.com/wayn111/waynboot-mall

1. Was ist Spring Security?

Spring Security ist ein Open-Source-Projekt, das auf dem Spring-Framework basiert und darauf ausgelegt ist, leistungsstarke und flexible Sicherheitsl?sungen für Java-Anwendungen bereitzustellen. Spring Security bietet die folgenden Funktionen:

    Authentifizierung: Unterstützt mehrere Authentifizierungsmechanismen, wie z. B. Formularanmeldung, HTTP-Basisauthentifizierung, OAuth2, OpenID usw.
  • Autorisierung: Unterstützt rollen- oder berechtigungsbasierte Zugriffskontrolle sowie ausdrucksbasierte feink?rnige Kontrolle.
  • Schutz: Bietet eine Vielzahl von Schutzma?nahmen, z. B. die Verhinderung von Sitzungsfixierungen, Klick-Hijacking, Cross-Site-Request-Forgery und anderen Angriffen.
  • Integration: Nahtlose Integration mit Spring Framework und anderen Bibliotheken und Frameworks von Drittanbietern wie Spring MVC, Thymeleaf, Hibernate usw.
2. So stellen Sie Spring Security vor

Führen Sie die Spring-Boot-Starter-Security-Abh?ngigkeit direkt in das Waynboot-Mall-Projekt ein,


org.springframework.boot
spring-boot-starter-security
3.1.0

3. So konfigurieren Sie Spring Security

Die Konfiguration von Spring Security in Spring Security 3.0 unterscheidet sich ein wenig von zuvor, zum Beispiel erbt es nicht mehr WebSecurityConfigurerAdapter. Im Waynboot-Mall-Projekt ist die spezifische Konfiguration wie folgt:

@Configuration
@EnableWebSecurity
@AllArgsConstructor
@EnableMethodSecurity(securedEnabled = true, jsr250Enabled = true)
public class SecurityConfig {
private UserDetailsServiceImpl userDetailsService;
private AuthenticationEntryPointImpl unauthorizedHandler;
private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
private LogoutSuccessHandlerImpl logoutSuccessHandler;

@Bean
public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
httpSecurity
// cors啟用
.cors(httpSecurityCorsConfigurer -> {})
.csrf(AbstractHttpConfigurer::disable)
.sessionManagement(httpSecuritySessionManagementConfigurer -> {
httpSecuritySessionManagementConfigurer.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
})
.exceptionHandling(httpSecurityExceptionHandlingConfigurer -> {
httpSecurityExceptionHandlingConfigurer.authenticationEntryPoint(unauthorizedHandler);
})
// 過濾請求
.authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> {
authorizationManagerRequestMatcherRegistry
.requestMatchers("/favicon.ico", "/login", "/favicon.ico", "/actuator/**").anonymous()
.requestMatchers("/slider/**").anonymous()
.requestMatchers("/captcha/**").anonymous()
.requestMatchers("/upload/**").anonymous()
.requestMatchers("/common/download**").anonymous()
.requestMatchers("/doc.html").anonymous()
.requestMatchers("/swagger-ui/**").anonymous()
.requestMatchers("/swagger-resources/**").anonymous()
.requestMatchers("/webjars/**").anonymous()
.requestMatchers("/*/api-docs").anonymous()
.requestMatchers("/druid/**").anonymous()
.requestMatchers("/elastic/**").anonymous()
.requestMatchers("/message/**").anonymous()
.requestMatchers("/ws/**").anonymous()
// 除上面外的所有請求全部需要鑒權(quán)認(rèn)證
.anyRequest().authenticated();
})
.headers(httpSecurityHeadersConfigurer -> {
httpSecurityHeadersConfigurer.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable);
});
// 處理跨域請求中的Preflight請求(cors),設(shè)置corsConfigurationSource后無需使用
// .requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
// 對(duì)于登錄login 驗(yàn)證碼captchaImage 允許匿名訪問

httpSecurity.logout(httpSecurityLogoutConfigurer -> {
httpSecurityLogoutConfigurer.logoutUrl("/logout");
httpSecurityLogoutConfigurer.logoutSuccessHandler(logoutSuccessHandler);
});
// 添加JWT filter
httpSecurity.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
// 認(rèn)證用戶時(shí)用戶信息加載配置,注入springAuthUserService
httpSecurity.userDetailsService(userDetailsService);
return httpSecurity.build();
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
/**
 * 強(qiáng)散列哈希加密實(shí)現(xiàn)
 */
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
}

Hier finden Sie eine detaillierte Einführung in die SecurityConfig-Konfigurationsklasse:

Die Methode
    filterChain(HttpSecurity httpSecurity) ist die Kernmethode der Zugriffskontrolle. Hier k?nnen Sie festlegen, ob eine Berechtigungsauthentifizierung für die URL, die CORS-Konfiguration, die CSRF-Konfiguration, die Konfiguration zum Laden von Benutzerinformationen, die Konfiguration des JWT-Filters und viele andere Funktionen erforderlich ist.
  • Die Methode
  • authenticationManager(AuthenticationConfiguration AuthenticationConfiguration) eignet sich zum Aktivieren der Authentifizierungsschnittstelle und muss manuell deklariert werden, andernfalls wird beim Start ein Fehler gemeldet.
  • Mit der Methode
  • bCryptPasswordEncoder() kann der Benutzer die Kennwortverschlüsselungsrichtlinie definieren, wenn er sich anmeldet. Sie muss manuell deklariert werden, andernfalls wird beim Start ein Fehler gemeldet.
4. So verwenden Sie Spring Security

Um Spring Security zu verwenden, müssen Sie nur die entsprechende @PreAuthorize-Annotation zu der Methode oder Klasse hinzufügen, die die Zugriffsberechtigungen steuern muss, wie folgt:

@Slf4j
@RestController
@AllArgsConstructor
@RequestMapping("system/role")
public class RoleController extends BaseController {

private IRoleService iRoleService;

@PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/list")
public R list(Role role) {
Page page = getPage();
return R.success().add("page", iRoleService.listPage(page, role));
}
}

Wir haben der Listenmethode die Annotation @PreAuthorize(“@ss.hasPermi('system:role:list')”) hinzugefügt, um anzuzeigen, dass der aktuell angemeldete Benutzer über system:role:list-Berechtigungen für den Zugriff auf die Listenmethode verfügt, andernfalls Es wird ein Berechtigungsfehler zurückgegeben.

5. Holen Sie sich die Berechtigungen des aktuell angemeldeten Benutzers

In der SecurityConfig-Konfigurationsklasse definieren wir UserDetailsServiceImpl als unsere Implementierungsklasse zum Laden von Benutzerinformationen, um das Konto und das Passwort des Benutzers in der Datenbank mit dem vom Frontend übergebenen Konto und Passwort zu vergleichen. Der Code lautet wie folgt:

@Slf4j
@Service
@AllArgsConstructor
public class UserDetailsServiceImpl implements UserDetailsService {

private IUserService iUserService;

private IDeptService iDeptService;

private PermissionService permissionService;

public static void main(String[] args) {
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
System.out.println(bCryptPasswordEncoder.encode("123456"));
}

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
// 1. 讀取數(shù)據(jù)庫中當(dāng)前用戶信息
User user = iUserService.getOne(new QueryWrapper().eq("user_name", username));
// 2. 判斷該用戶是否存在
if (user == null) {
log.info("登錄用戶:{} 不存在.", username);
throw new UsernameNotFoundException("登錄用戶:" + username + " 不存在");
}
// 3. 判斷是否禁用
if (Objects.equals(UserStatusEnum.DISABLE.getCode(), user.getUserStatus())) {
log.info("登錄用戶:{} 已經(jīng)被停用.", username);
throw new DisabledException("登錄用戶:" + username + " 不存在");
}
user.setDept(iDeptService.getById(user.getDeptId()));
// 4. 獲取當(dāng)前用戶的角色信息
Set rolePermission = permissionService.getRolePermission(user);
// 5. 根據(jù)角色獲取權(quán)限信息
Set menuPermission = permissionService.getMenuPermission(rolePermission);
return new LoginUserDetail(user, menuPermission);
}
}

Hier finden Sie eine Erl?uterung der Codelogik von UserDetailsServiceImpl, damit Sie sie mithilfe des Codes verstehen k?nnen.

    Aktuelle Benutzerinformationen in der Datenbank lesen
  • Stellen Sie fest, ob der Benutzer existiert
  • Bestimmen Sie, ob Sie die Funktion deaktivieren m?chten
  • Rufen Sie die Rolleninformationen des aktuellen Benutzers ab
  • Erhalten Sie Berechtigungsinformationen basierend auf der Rolle
Um es zusammenzufassen

In diesem Artikel erfahren Sie, wie Sie die Spring Security 3.0-Version des Berechtigungskontroll-Frameworks in das Back-End-Verwaltungssystem und die Codepraxis einführen. Ich glaube, es kann jedem helfen, ein klares Verst?ndnis des Berechtigungskontroll-Frameworks Spring Security zu erlangen. Sp?ter k?nnen Sie der Nutzungsanleitung in diesem Artikel folgen, um Spring Security Schritt für Schritt in Ihre eigenen Projekte zur Zugriffskontrolle einzuführen.

Das obige ist der detaillierte Inhalt vonNutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Spring Security 6: cors() ist veraltet und zum Entfernen markiert Spring Security 6: cors() ist veraltet und zum Entfernen markiert Feb 10, 2024 pm 11:45 PM

我有下面的代碼:publicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{returnhttp.httpBasic().disable().cors().and().csrf().disable().authorizeHttpRequests().requestMatchers("

17 M?glichkeiten, den Bluescreen ?kernel_security_check_failure' zu beheben 17 M?glichkeiten, den Bluescreen ?kernel_security_check_failure' zu beheben Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure (Kernel-Check-Fehler) ist eine relativ h?ufige Art von Stoppcode. Unabh?ngig vom Grund führt der Bluescreen-Fehler jedoch dazu, dass viele Benutzer diese Seite sorgf?ltig vorstellen. 17 L?sungen für den Bluescreen ?kernel_security_check_failure“ Methode 1: Entfernen Sie alle externen Ger?te Wenn ein externes Ger?t, das Sie verwenden, nicht mit Ihrer Windows-Version kompatibel ist, kann der Bluescreen-Fehler ?Kernelsecuritycheckfailure“ auftreten. Dazu müssen Sie alle externen Ger?te trennen, bevor Sie versuchen, Ihren Computer neu zu starten.

Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Ein neues Programmierparadigma, wenn Spring Boot auf OpenAI trifft Feb 01, 2024 pm 09:18 PM

Im Jahr 2023 ist die KI-Technologie zu einem hei?en Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand ?SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unn?tige Komplexit?t zu vermeiden. Durch ?SpringAI“ k?nnen Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.

Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Apr 28, 2024 am 11:46 AM

Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende L?sungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen M?glichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-j?hrige Geschichte im Bereich der Softwareentwicklung, und seit der Ver?ffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten

Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Was sind die Implementierungsmethoden für programmatische Frühlingstransaktionen? Jan 08, 2024 am 10:23 AM

So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;

So legen Sie die Transaktionsisolationsstufe im Frühjahr fest So legen Sie die Transaktionsisolationsstufe im Frühjahr fest Jan 26, 2024 pm 05:38 PM

So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.

So konfigurieren Sie Dateien im Frühjahr So konfigurieren Sie Dateien im Frühjahr Jan 18, 2024 pm 03:53 PM

Schritte der Spring-Konfigurationsdatei: 1. XML-Konfigurationsdatei erstellen; 3. Datenquelle konfigurieren; 6. Abh?ngigkeiten konfigurieren; 9. Stellen Sie die Anwendung bereit. 10. Starten Sie die Anwendung. Detaillierte Einführung: 1. Erstellen Sie eine XML-Konfigurationsdatei und erstellen Sie eine XML-Datei im Ressourcenverzeichnis des Projekts. 2. Fügen Sie die erforderlichen Abh?ngigkeiten usw. hinzu.

Nutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework Nutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework Feb 18, 2024 pm 05:00 PM

In Back-End-Managementsystemen ist in der Regel eine Zugriffsberechtigungskontrolle erforderlich, um den Zugriff verschiedener Benutzer auf Schnittstellen einzuschr?nken. Fehlen einem Benutzer bestimmte Berechtigungen, kann er auf bestimmte Schnittstellen nicht zugreifen. In diesem Artikel wird das Waynboot-Mall-Projekt als Beispiel verwendet, um vorzustellen, wie g?ngige Back-End-Verwaltungssysteme das Berechtigungskontroll-Framework SpringSecurity einführen. Die Gliederung lautet wie folgt: waynboot-mall-Projektadresse: https://github.com/wayn111/waynboot-mall 1. Was ist SpringSecurity? SpringSecurity ist ein Open-Source-Projekt, das auf dem Spring-Framework basiert und darauf abzielt, leistungsstarke und flexible Sicherheit bereitzustellen für Java-Anwendungen.

See all articles