当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.3密码代理定制

龚伯寅
2023-03-14

有人知道如何覆盖laravel的密码代理中使用的函数吗?我知道这些文件:

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

给出关于如何处理视图和一些表面层的信息,但实际上一点也不清楚,或者我没有阅读足够的次数。

我已经知道如何覆盖ResetsPasswords.phpTrait,但是覆盖Password::broker()的功能是为了中的下一层。

如果需要更多信息,我可以提供一些。

提前谢谢你。

共有2个答案

利永年
2023-03-14

步骤1缺少一些内容

第一步

可能最安全的方法是简单地将类从illumb\Auth\Passwords\PassswordResetServiceProvider.php复制到App\Provider\CustomPasswordResetServiceProvider并更改:

  1. 命名空间到命名空间应用程序\提供程序
  2. CustomPasswordResetServiceProvider的类名
  3. 添加使用App\Services\CustomPasswordBrokerManager 到顶部
  4. 在函数registerPasswordBroker中,将PasswordBrokerManager重命名为CustomPasswordBrokerManager

第二步。

除了更改解析方法外,还要执行以下操作:

  1. 将命名空间更改为命名空间App\Services;
  2. 在顶部添加use Illumate\Auth\Password\Database aseTokenRepository;
  3. 将类名更改为CustomPasswordBrokerManager

吉嘉珍
2023-03-14

我不得不面对同样的问题,需要覆盖一些PasswordBroker函数。在网络上进行了大量调查并多次尝试失败后,我最终实现了以下功能:

>

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'];
    }
}

在config/app.php中注释掉了行:
//illumb\Auth\Passwords\PasswordResetServiceProvider::class,
添加了:
app\Providers\CustomPasswordResetServiceProvider::class,

App\Services文件夹内部创建了一个CustomPasswordBrokerManager,并复制了默认PasswordBrokerManager的上下文,该默认PasswordBrokerManager位于:
light\Auth\Passwords\PasswordBrokerManager.php
,然后修改了函数resolve以返回CustomPasswordProvider类的实例。

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'])
);
}

最后,在App\Services文件夹中,我创建了一个CustomPasswordBroker类,该类扩展了位于以下位置的默认PasswordBroker:
照明\Auth\Password\PasswordBroker,并覆盖了我需要的函数。

use Illuminate\Auth\Passwords\PasswordBroker as BasePasswordBroker;    

class CustomPasswordBroker extends BasePasswordBroker    
{    
// override the functions that you need here    
}      

不确定这是否是最好的实现,但它对我很有效。

 类似资料:
  • 我可以访问预配置的Windows XP 32位工作站。它在防火墙下,要离开它,它使用超文本传输协议代理服务器。要获取代理设置,我需要主机、端口、用户名和密码。 超文本传输协议://用户名:密码@服务器:端口 我能够找到代理url和端口(来自PAC-自动配置文件),但我不知道如何获取用户名/密码。有没有办法以某种方式读取它?至少用户名?我可能会获得管理员权限。 你知道有什么工具可以帮助你吗? 我只找

  • "管理密码" 对话框提供了保存您经常使用的密码和以后快速访问它们的方法。它包含了用户存储的密码记录列表。通常密码标签和压缩文件掩码会被包含在此列表中,但是如果没有定义标签,“标签”列将显示密码文本。 您可以从常规 WinRAR 密码对话框中打开“管理密码”。在您输入默认密码或 WinRAR 询问一个加密的文件、压缩文件的密码时,点击“管理密码...”按钮。 点击“添加” 按钮添加一个新的密码记录到

  • 密码管理在非必要情况下一般不会重新发明,Django致力于提供一套安全、灵活的工具集来管理用户密码。本文档描述Django存储密码和hash存储方法配置的方式,以及使用hash密码的一些实例。 另见 即使用户可能会使用强密码,攻击者也可能窃听到他们的连接。使用HTTPS来避免在HTTP连接上发送密码(或者任何敏感的数据),因为否则密码又被嗅探的风险。 Django如何储存密码 Django通常使用

  • 大部分开发者知道密码不能以明文形式存储,但是许多开发者仍认为使用 md5 或者 sha1 来哈希化密码是安全的。 一度,使用上述的哈希算法是足够安全的,但是, 现代硬件的发展使得短时间内暴力破解上述算法生成的哈希串成为可能。 为了即使在最糟糕的情况下(你的应用程序被破解了)也能给用户密码提供增强的安全性, 你需要使用一个能够对抗暴力破解攻击的哈希算法。目前最好的选择是 bcrypt。在 PHP 中

  • 使用Django中提供的密码方案 该django.contrib.auth.hashers模块提供了一组函数来创建和验证散列密码。您可以独立于User模型使用它们。 # from django.contrib.auth.hashers import make_password, check_password # 对密码进行加密操作 # upass = make_password(reque

  • 1.密码安全 gossh批量操作时,将密码明文存放到配置文件中有时不太妥。gossh提供加密存放方式。通过-e开关,默认是不加密存放,-e参数代表当前的IP配置文件是加密后存放的。 为此提供了一个专门的加解密工具passtool。 [root@andesli.com /project/go/src/gossh]#./passtool -d 指定密码密文生成明文 -e 指定密码