Pengesah Tersuai
Tulis kekangan pengesahan anda sendiri.
Pengesah Tersuai ialah pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Perkhidmatan Mikro dan API REST Spring Boot 4, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Perkhidmatan Mikro dan API REST Spring Boot 4 merangkumi sejumlah 4 pelajaran.
Apabila Fungsi Terbina Dalam Tidak Mencukupi
Kekangan standard tidak dapat menyatakan setiap peraturan — format kod kupon yang sah, nombor telefon untuk sesuatu rantau, atau nilai yang mesti wujud dalam pangkalan data. Untuk keadaan ini, tulis kekangan tersuai yang disokong oleh pengesah.
Dua Bahagian Kekangan Tersuai
Kekangan tersuai mempunyai dua bahagian:
- anotasi yang diletakkan pada medan atau parameter
- ConstraintValidator yang mengandungi logik pemeriksaan sebenar
Menentukan Anotasi
Cipta anotasi dan pautkannya kepada pengesah dengan @Constraint. Isytiharkan ahli standard message, groups, dan payload yang diperlukan oleh spesifikasi.
@Target({ FIELD, PARAMETER })
@Retention(RUNTIME)
@Constraint(validatedBy = StrongPasswordValidator.class)
public @interface StrongPassword {
String message() default "Password is not strong enough";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}Melaksanakan ConstraintValidator
Pengesah melaksanakan ConstraintValidator<Annotation, Type> dan mengatasi isValid. Kembalikan true apabila nilai mematuhi peraturan.
public class StrongPasswordValidator
implements ConstraintValidator<StrongPassword, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext ctx) {
if (value == null) return true; // let @NotNull handle null
return value.length() >= 8
&& value.chars().anyMatch(Character::isDigit)
&& value.chars().anyMatch(Character::isUpperCase);
}
}Konvensyen Pengendalian Nil
Mengikut konvensyen, pengesah tersuai menganggap null sebagai sah dan menyerahkan pemeriksaan nilai null kepada @NotNull. Ini memastikan kekangan boleh digabungkan — setiap peraturan melaksanakan satu tugas.
Menggunakan Kekangan Tersuai
Gunakan anotasi anda sama seperti anotasi terbina dalam. Apabila digabungkan dengan @Valid pada pengawal, anotasi itu mengambil bahagian dalam aliran pengesahan biasa.
public class CreateUserRequest {
@NotBlank
@StrongPassword
private String password;
}Mesej Pelanggaran Tersuai
Di dalam isValid, anda boleh melumpuhkan mesej lalai dan menambah mesej mengikut konteks, yang berguna apabila satu anotasi menguatkuasakan beberapa subperaturan.
ctx.disableDefaultConstraintViolation();
ctx.buildConstraintViolationWithTemplate(
"Password must include a digit and an uppercase letter")
.addConstraintViolation();
return false;Menyuntik Bean ke dalam Pengesah
ConstraintValidator ialah bean Spring, jadi ia boleh menggunakan suntikan pembina — sekali gus membolehkan peraturan yang merujuk repositori atau perkhidmatan, seperti pemeriksaan keunikan.
public class UniqueEmailValidator
implements ConstraintValidator<UniqueEmail, String> {
private final UserRepository repo;
public UniqueEmailValidator(UserRepository repo) { this.repo = repo; }
@Override
public boolean isValid(String email, ConstraintValidatorContext ctx) {
return email == null || !repo.existsByEmail(email);
}
}Kekangan Peringkat Kelas
Sesetengah peraturan melibatkan beberapa medan — "kata laluan mesti sama dengan confirmPassword." Sasarkan anotasi pada TYPE dan sahkan keseluruhan objek dengan mengakses beberapa medan bersama-sama.
@Target(TYPE)
@Retention(RUNTIME)
@Constraint(validatedBy = PasswordsMatchValidator.class)
public @interface PasswordsMatch {
String message() default "Passwords do not match";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}Cangkuk Pemulaan
Atasi initialize untuk menangkap atribut daripada tika anotasi, seperti panjang minimum yang boleh dikonfigurasikan, sebelum pengesahan dijalankan.
@Override
public void initialize(StrongPassword ann) {
this.minLength = ann.minLength();
}Pastikan Pengesah Tulen dan Pantas
Pengesah dijalankan pada setiap permintaan, jadi pastikan ia pantas dan bebas daripada kesan sampingan jika boleh. Pemeriksaan berasaskan pangkalan data dibenarkan, tetapi hendaklah menggunakan indeks dan ringan supaya tidak melambatkan pengendalian permintaan.
Semakan Pantas
Uji pemahaman anda tentang pengesah tersuai.
Imbas Kembali
Pengesah tersuai melanjutkan Pengesahan Bean.
- Satu kekangan ialah anotasi
@ConstraintsertaConstraintValidator - Atasi
isValid; anggapnullsebagai sah mengikut konvensyen - Pengesah ialah bean, jadi ia menyokong suntikan pembina
- Gunakan kekangan peringkat kelas untuk peraturan merentas medan
- Sesuaikan mesej melalui konteks pengesahan
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 24
- Pelajaran
- 93
Soalan Lazim
Adakah pelajaran “Pengesah Tersuai” percuma?
Ya — teks penuh “Pengesah Tersuai” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Perkhidmatan Mikro dan API REST Spring Boot 4, tingkat taraf kepada CoddyKit PRO. Kursus Perkhidmatan Mikro dan API REST Spring Boot 4 merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengesah Tersuai”?
Tulis kekangan pengesahan anda sendiri. Anda berlatih Perkhidmatan Mikro dan API REST Spring Boot 4 menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Perkhidmatan Mikro dan API REST Spring Boot 4?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Pengesah Tersuai” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 ini?
Ya. Setiap pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengesahan Bean dengan @Valid
- Pengesah Tersuai
- @ControllerAdvice dan @ExceptionHandler
- Butiran Masalah (RFC 7807)