मैं वसंत बूट डाटा बाकी भंडार का उपयोग कर मेरी User
संस्थाओंस्प्रिंग बूट डाटा में इकाई सत्यापन के बाद @HandleBeforeCreate चल रहा है बाकी
@Entity
public class User {
@Id
@GeneratedValue
private long id;
@NotEmpty
private String firstName;
@NotEmpty
private String lastName;
@NotEmpty
private String email;
@Size(min = 5, max = 20)
private String password;
// getters and setters
}
लागू करने के लिए उपयोग कर रहा हूँ:
public interface UserRepository extends CrudRepository<User, Long> {}
मैं आपकी क्या अपेक्षाएं हैं
@Configuration
public class CustomRestConfiguration extends SpringBootRepositoryRestMvcConfiguration {
@Autowired
private Validator validator;
@Override
protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator("beforeCreate", validator);
}
}
और केवल: पहला POST
एड उपयोगकर्ताओं को मान्य है बाद में डीबी में भंडारण से पहले उपयोगकर्ता का पासवर्ड हैश:
@Component
@RepositoryEventHandler(User.class)
public class UserRepositoryEventHandler {
private PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
@HandleBeforeCreate
public void handleUserCreate(User user) {
user.setPassword(passwordEncoder.encode(user.getPassword()));
}
}
यह हालांकि पता चला है के रूप में, मान्यता पासवर्ड हैशिंग के बाद किया जाता है और एक परिणाम के रूप में यह विफल रहता है के कारण बहुत लंबा किया जा रहा पासवर्ड टुकड़ों में बांटा।
क्या स्प्रिंग को पहले सत्यापन करने के लिए निर्देश देने का कोई तरीका है और केवल तब पासवर्ड हैश? मुझे पता है कि मैं खुद को एक नियंत्रक लिख सकता हूं और सब कुछ ठीक तरीके से निर्दिष्ट कर सकता हूं, लेकिन मैं इसे अपने अंतिम उपाय के रूप में छोड़ दूंगा।
क्या आप वसंत बूट/डेटा आरईएसटी का उपयोग कर रहे हैं? मैंने बस अपने ऐप पर इसका परीक्षण किया और जब मैंने रेपो हैंडलर और 'साइज वैलिडेटर फोरशेरस्यून्स' में ब्रेकपॉइंट लगाया, तो वैधकर्ता में से एक हैंडलर से पहले मारा जाता है, इसलिए मेरे लिए यह अपेक्षा के अनुसार काम करता है। मैं वसंत बूट 1.2.5 –
@ बोहुस्लावबुर्गगार्ट का उपयोग कर रहा हूं मैं वसंत बूट '1.2.6.RELEASE' पर हूं और यह अन्य सभी निर्भरता संस्करणों का प्रबंधन करता है। मैं वास्तव में नहीं जानता कि सत्यापनकर्ता पर ब्रेकपॉइंट कैसे डाला जाए, क्योंकि मैं जेपीए द्वारा बनाई गई एक (मुझे लगता है) को स्वचालित करता है। यह दृश्यों के पीछे कहीं भी होता है। ऐसा करने की कोशिश करेंगे हालांकि – Wojtek
@Wojtek, क्या कोई अन्य हुक है जिसका उपयोग मैं सफल बीन सत्यापन (इसे अस्तित्व में रखने से पहले) के बाद नियंत्रण प्राप्त कर सकता हूं? – masT