मैं एक ऐप विकसित करने के लिए लार्वेल 5 का उपयोग कर रहा हूं जो प्रत्येक उपयोगकर्ता को अपनी प्रोफ़ाइल अपडेट करने की अनुमति देता है। पासवर्ड अपडेट करने के लिए
, उपयोगकर्ता को पहले अपना पुराना पासवर्ड दर्ज करना होगा और यदि पुराना पासवर्ड मेल खाता है तो उसका नया दर्ज पासवर्ड डीबी में धोया और संग्रहीत किया जाएगा। लार्वेल फॉर्म अनुरोध सत्यापन का उपयोग करके, मैं इसे कैसे सत्यापित कर सकता हूं?लार्वेल 5, उपयोगकर्ता का पासवर्ड अपडेट करें
उत्तर
मैंने एक कस्टम सत्यापनकर्ता बनाया और इसे जोड़ा इस तरह AppServiceProvider:
<?php
namespace App\Providers;
use Validator;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Hash ;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('password_hash_check', function($attribute, $value, $parameters, $validator) {
return Hash::check($value , $parameters[0]) ;
});
}
तो मैं इसे अपने प्रपत्र अनुरोध सत्यापनकर्ता में इस तरह का प्रयोग किया:
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class UpdateUserProfileRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$hashed_password = $this->user()->password ;
return [
'oldPassword'=> "password_hash_check:$hashed_password|string|min:6",
'newPassword' => 'required_with:oldPassword|confirmed|min:6',
];
}
आप द्वारा
Hash::make()
उत्पन्न आप
Hash::check('unhashed', $hashed)
हर बार जब आप Hash::make('string')
चलाने के लिए, एक अलग हैश किया जाता है उपयोग करने की आवश्यकता है और पिछले एक से मेल नहीं खाएगी एक हैश्ड मूल्य जाँच करना चाहते हैं जब । उदाहरण के लिए:
// Generate a hash
$password = Hash::make('password');
// $password == $2y$08$T9r9qUxrr6ejs9Ne.nLzMet8l0A8BM5QvLjhaaJasgsbMBdX4JjRu
// Generate a new hash
$new_password = Hash::make('password');
// $new_password == $2y$08$3KBlYKIMpIvk.TWwim9oPuwGA.Pzv1iF7BsDyYkz7kQlhkA/ueULe
// Compare hashes the WRONG way
$password === $new_password; // false
// Compare hash the RIGHT way
Hash::check('password', $password); // true
Hash::check('password', $new_password); // true
तो हैश श्रेणी के हैश :: मेक() विधि का उपयोग करें।
धन्यवाद। लेकिन मुझे लार्वेल फॉर्म अनुरोध के माध्यम से सत्यापन करने की ज़रूरत है, इसे मैन्युअल रूप से नहीं कर रहा है। – Salar
मुझे यकीन नहीं है लेकिन मुझे लगता है कि लार्वेल में ऐसा करने का कोई मूल तरीका नहीं है।
class CustomValidator extends \Illuminate\Validation\Validator {
public function validateHash($attribute, $value, $parameters)
{
$expected = $parameters[0];
return Hash::check($value, $expected);
}
}
एक प्रदाता में यह रजिस्टर:
class AppServiceProvider extends ServiceProvider {
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
require_once __DIR__ . '/../Http/helpers.php';
Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
}
// ...
}
और एक फार्म के अनुरोध में इसका इस्तेमाल करते हैं:
class MyFormRequest extends FormRequest {
public function rules()
{
$password = Auth::user()->password;
return [
'old_password' => "required|hash:" . $password
]
}
// ...
}
लिंक करने के लिए यदि हां, तो आप एक कस्टम "हैश" सत्यापनकर्ता लागू कर सकते हैं प्रलेखन: http://laravel.com/docs/5.0/validation#custom-validation-rules
यह मेरी मदद करता है। धन्यवाद! :) – rahmat
- 1. लार्वेल में उपयोगकर्ता बनाना 5
- 2. लार्वेल 5 - वर्तमान उपयोगकर्ता पासवर्ड के लिए सत्यापनकर्ता
- 3. लार्वेल 5
- 4. लार्वेल 5 उपयोगकर्ता मॉडल नहीं मिला
- 5. लार्वेल 5
- 6. लार्वेल 5
- 7. लार्वेल 5
- 8. लार्वेल 5
- 9. नियंत्रक लार्वेल 5 एफपी
- 10. मार्ग लार्वेल 5
- 11. कोणीयजेएस + लार्वेल 5 प्रमाणीकरण
- 12. लार्वेल 5
- 13. लार्वेल 5
- 14. एक बार लार्वेल 5
- 15. लार्वेल 5
- 16. लार्वेल 5
- 17. Django Rest Framework में उपयोगकर्ता पासवर्ड कैसे अपडेट करें?
- 18. उपयोगकर्ता को पिछले 5 पासवर्ड का उपयोग करने से रोकें?
- 19. लार्वेल 5 यूनिट परीक्षण
- 20. जावा 5 में पासवर्ड कैसे मास्क करें?
- 21. लार्वेल 5.x
- 22. लार्वेल में संपत्तियां प्रबंधित करें 5
- 23. लार्वेल 5 में कुकीज़ कैसे अक्षम करें?
- 24. लार्वेल 5 मॉडल फ़ोल्डर
- 25. लार्वेल 5: ईमेल भेजना
- 26. लार्वेल 5 एलिक्सीर कम
- 27. लार्वेल 5: उपयोगकर्ता लॉग इन होने पर navbar बदलें
- 28. ओवरराइट लार्वेल 5 सहायक समारोह
- 29. लार्वेल 5: उत्पादन में होमस्टेड का उपयोग करें
- 30. लार्वेल 5 में फॉर्म अनुरोध नियमों का परीक्षण कैसे करें?
शायद इस सवाल का डुप्लिकेट। इस लिंक http://stackoverflow.com/questions/28399899/laravel-update-password-passes-validation-but-doesnt-update-record – HawkEye
मैं, कहा है कि कैसे अद्यतन परिदृश्य के दौरान उपयोगकर्ता पासवर्ड मान्य करने के लिए संदर्भ लें, लार्वा फॉर्म अनुरोध सत्यापन का उपयोग करके, इसे मैन्युअल रूप से नियंत्रक कार्यों में नहीं कर रहा है। – Salar