91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot用戶認證授權

發布時間:2024-11-27 15:23:16 來源:億速云 閱讀:78 作者:小樊 欄目:編程語言

Spring Boot是一個基于Spring框架的快速開發平臺,它提供了許多開箱即用的功能,包括用戶認證和授權。在Spring Boot中實現用戶認證授權,通常使用Spring Security框架。下面是一個簡單的示例,展示如何在Spring Boot項目中實現用戶認證和授權。

1. 添加依賴

首先,在你的pom.xml文件中添加Spring Security的依賴:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <!-- Spring Boot Starter Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 配置Spring Security

創建一個配置類來設置Spring Security。以下是一個簡單的示例:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/public/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
            .logout()
                .permitAll();

        // 添加CSRF過濾器
        http.csrf().disable();

        // 添加自定義的認證過濾器
        http.addFilterBefore(new CustomAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

3. 創建自定義認證過濾器

創建一個自定義的認證過濾器,用于處理用戶登錄請求。以下是一個簡單的示例:

import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CustomAuthenticationFilter extends UsernamePasswordAuthenticationFilter {

    @Override
    public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
        if (!request.getMethod().equals("POST")) {
            throw new AuthenticationException("Authentication method not supported: " + request.getMethod()) {};
        }

        String username = obtainUsername(request);
        String password = obtainPassword(request);

        if (username == null) {
            username = "";
        }

        if (password == null) {
            password = "";
        }

        username = username.trim();

        CustomAuthenticationToken authRequest = new CustomAuthenticationToken(username, password);

        setDetails(request, authRequest);

        return this.getAuthenticationManager().authenticate(authRequest);
    }
}

4. 創建自定義認證令牌

創建一個自定義的認證令牌類,繼承自UsernamePasswordAuthenticationToken。以下是一個簡單的示例:

import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;

public class CustomAuthenticationToken extends UsernamePasswordAuthenticationToken {
    public CustomAuthenticationToken(String principal, String credentials) {
        super(principal, credentials);
    }
}

5. 創建登錄頁面

創建一個簡單的登錄頁面/login,可以使用Thymeleaf或其他模板引擎來創建。以下是一個簡單的Thymeleaf示例:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form method="post" action="/login">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required /><br/>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required /><br/>
        <button type="submit">Login</button>
    </form>
</body>
</html>

6. 配置控制器

創建一個控制器來處理登錄頁面和其他請求。以下是一個簡單的示例:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

    @GetMapping("/login")
    public String login() {
        return "login";
    }

    @GetMapping("/public")
    public String publicPage() {
        return "public";
    }
}

7. 運行應用程序

現在你可以運行你的Spring Boot應用程序,并嘗試訪問/login/public兩個頁面。訪問/login頁面進行登錄,登錄成功后可以訪問/public頁面。

以上就是一個簡單的Spring Boot用戶認證和授權的示例。你可以根據實際需求進行擴展和修改。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

房产| 儋州市| 阳城县| 隆尧县| 驻马店市| 子长县| 大理市| 盐边县| 宜君县| 阳信县| 武乡县| 绿春县| 兴安县| 时尚| 关岭| 许昌县| 宁明县| 民丰县| 登封市| 枣庄市| 大竹县| 富宁县| 阆中市| 广州市| 罗江县| 长沙县| 定远县| 伊川县| 辽源市| 永济市| 定襄县| 武宣县| 怀柔区| 秦安县| 荆门市| 六安市| 施甸县| 唐海县| 株洲市| 内江市| 扶风县|