2016-11-10 17 views
8

Lavel'in parola brokerinde kullanılan işlevleri nasıl geçersiz kılacağını bilen var mı?Laravel 5.3 Şifre Komisyoncusu Özelleştirme

https://laravel.com/docs/5.3/passwords#resetting-views

görüş ve birkaç yüzey seviyesi şeyler gibi şeyler için yapılması gerekenler konusunda bilgi verin ama net gerçekten hiç değil ya da belki ben o kadar kez okumuyorum: Ben docs biliyorum.

Zaten ResetsPasswords.php taşıyıcılığının geçersiz kılmak nasıl biliyorum ama Password::broker() işlevselliğini geçersiz kılma sonraki katmana içindir.

Ben nazikçe bazı sağlayabilir gerekli fazla bilgi varsa.

Önceden teşekkür ederiz.

cevap

9

Bazı sorunlarla PasswordBroker işlevlerini geçersiz kılmak için gerekliydi. Web ve birçok başarısız denemeler hakkında soruşturma bir sürü bunu sonra aşağıdaki uygulanmasına sona erdi: Bir CustomPasswordBrokerManager örneği kayıtlı nerede

  1. App \ Sağlayıcıları içinde CustomPasswordResetServiceProvider düzenlendi. konfigürasyonunda

    namespace App\Providers; 
    use Illuminate\Support\ServiceProvider; 
    use App\Services\CustomPasswordBrokerManager; 
    class CustomPasswordResetServiceProvider extends ServiceProvider{ 
        protected $defer = true; 
    
        public function register() 
        { 
         $this->registerPasswordBrokerManager(); 
        } 
    
        protected function registerPasswordBrokerManager() 
        { 
         $this->app->singleton('auth.password', function ($app) { 
          return new CustomPasswordBrokerManager($app); 
         }); 
        } 
    
        public function provides() 
        { 
         return ['auth.password']; 
        } 
    } 
    
  2. app.php hattını dışarı yorumladı /:
    //Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
    ve ekledi:
    App\Providers\CustomPasswordResetServiceProvider::class,

  3. İçinde App \ Servisler klasörü CustomPasswordBrokerManager oluşturulan ve bağlam kopyalananadresinde bulunan varsayılan PasswordBrokerManager öğesinin Illuminate \ Auth \ Şifreler \ PasswordBrokerManager.php
    Sonra CustomPasswordProvider sınıfının bir örneğini döndürmek için fonksiyon kararlılığını güncellenmiştir.

    protected function resolve($name) 
    { 
        $config = $this->getConfig($name); 
        if (is_null($config)) { 
         throw new InvalidArgumentException("Password resetter [{$name}] is not defined."); 
        } 
    
        return new CustomPasswordBroker(
         $this->createTokenRepository($config), 
         $this->app['auth']->createUserProvider($config['provider']) 
    ); 
    } 
    
  4. Nihayet App \ Servisler klasörün içinde ben bulunan varsayılan PasswordBroker uzanan bir CustomPasswordBroker sınıfı oluşturuldu:
    Illuminate \ Auth \ Şifreler \ PasswordBroker ile ihtiyaç duyduğumuz işlevleri geçersiz.

    use Illuminate\Auth\Passwords\PasswordBroker as BasePasswordBroker;  
    
    class CustomPasswordBroker extends BasePasswordBroker  
    {  
    // override the functions that you need here  
    }  
    

bu en iyi uygulama ama benim için çalıştı emin değilim.

+0

Bu, sonlandırdığım çok benzer bir uygulama. Dizinleri ve tüm kimlikleri ile çok iyi açıkladı. +1 ve işaretli Doğru! –

+1

Sadece şifre sıfırlama için gerekli şifre uzunluğunu değiştirmek zorunda kaldı. 6 karakterin min uzunluğu, laravel kodunda oldukça derinlere gömülür, böylece sadece cevabınızı burada değiştirebilirim. Çok teşekkür ederim! – johnnydoe82

+1

Bunun için teşekkürler.Bu Şifre Broker ve Şifre Broker Yöneticisi karışıklık ile takılıyordum. Cidden, bu kadar kötü bir şekilde basit olan bir şeyi nasıl karmaşık hale getirdiklerini anlayamıyorum. Ayrıca, Laravel 5.4 üzerinde bunu yapan kişiler için, servis sağlayıcının 'register' yöntemi için burada gösterilenlerden biraz farklıdır. Esasen, 'registerPasswordBroker' yöntemi, kendi özel' CustomPasswordBrokerManager 'örneğini kullandığınız kısım haricinde' Illuminate \ Auth \ Passwords \ PasswordResetServiceProvider 'şeklinde kopyalanmalıdır. – racl101