スプリングコンセプトアレンジ

1813 ワード

1.jwtトークン


1)依存項目の追加


jwt依存性を追加します.
implementation 'io.jsonwebtoken:jjwt:0.9.1'

2)UserDetailsの作成


Spring Securityが管理するUserDetailsタイプのオブジェクトを作成する必要があります.
public class UserDetailsImpl implements UserDetails {
private final User user;
@Override
public String getPassword() {
return user.getPassword();
}
@Override
public String getUsername() {
return user.getNickname();
}
}

3)ユーザーレポートの追加


public interface UserRepository extends JpaRepository {
Optional findByEmail(String email);
}

4)UserDetailsServiceの作成


UserDetails Serviceを追加し、Spring Securityでユーザーを検索する方法を提供します.
UserDetailsServiceのloadUserByUsernameメソッドを上書きすることで、ユーザーを検索する方法を直接指定します.
戻りタイプはUserDetailsタイプでなければなりません.
public class CustomUserDetailService implements UserDetailsService {

@Autowired
private UserRepository userRepository;

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
    return userRepository.findByEmail(username)
            .orElseThrow(() -> new UsernameNotFoundException("사용자를 찾을 수 없습니다."));
}
}

5)JWTユーティリティクラスの追加


JWTのクラスを生成、検証、抽出します.
JWTフィルタで使えばいいだけです.

6) 6. JWTフィルタの追加


検証に成功したら、Contextに検証オブジェクトを入れます.
認証に失敗した場合は、次のフィルタに移動します.

7)スプリング安全設定


JWTフィルタがSpring Securityによって管理されている場合は、設定に追加する必要があります.
フィルタはnewを使用してオブジェクトを作成して登録する必要があります.
フィルターに@Componentや@Benを貼ると、newと宣言されるほか、再度フィルターとして登録されるからです.
Cookieのコインが渡されるので、CORSも設置します.

8)スプリング設定


スプリングの安全性では、スプリングのCORSを使用可能に設定します.
クライアントのクッキーを渡して受信するため、allowCrementsをtrueに設定します.
クライアントCookieに渡されるヘッダーはExposedHeaderに入れてください.