【问题标题】:custom auth and hashing laravel 5.1自定义身份验证和散列 laravel 5.1
【发布时间】:2015-12-16 12:03:39
【问题描述】:

我有一个现有的数据库。

users :
username => varchar
password => md5 hashing

我是 laravel 的新手,我尝试从 laravel docs 创建简单的登录和注册,效果很好, 但在文档中是为 laravel 创建的, 现在我想使用现有数据创建相同的登录/注册。

我收到了来自How to use SHA1 encryption instead of BCrypt in Laravel 4? 的一些问题 但我不明白如何使用它。

有什么建议吗?

对不起,我的语法不好。

【问题讨论】:

  • 你在那里不明白什么?他写了你需要做的所有步骤,甚至为你写了代码,你需要做的就是复制粘贴。
  • routes。我已经完成了复制粘贴。但我不知道下一步该做什么.. 我是 laravel 的新手。
  • 什么路线?你应该使用同样的laravel。只需将hash('sha1', $value);更改为md5,然后你将使用md5进行laravel身份验证。
  • 路由如Route::get('auth/login', 'Auth\AuthController@getLogin');。对不起,如果我的问题让你感到困惑。
  • 你的意思是以前的密码是md5 hash的形式吗?

标签: php authentication md5 laravel-5.1


【解决方案1】:

我会尽力回答我的问题。 我从Facebook Group Laravel Indonesia 拿来的

  • 创建目录app/libraries

  • app/libraries 添加到composer.json

    "classmap": ["database","app/libraries"],

  • app/libraries 中创建MD5Hasher.php

    <?php    
    namespace App\Libraries;        
    use Illuminate\Contracts\Hashing\Hasher as HasherContract;
    
    class MD5Hasher implements HasherContract {
    
    public function make($value, array $options = array()) {
    $value = env('SALT', '').$value;
    return md5($value);
    }
    
    public function check($value, $hashedValue, array $options = array()) {
    return $this->make($value) === $hashedValue;
    }
    
    public function needsRehash($hashedValue, array $options = array()) {
    return false;
    }
    
    }
    
  • app/libraries 中创建MD5HashServiceProvider.php

    <?php
    
    namespace App\Libraries;
    
    use Illuminate\Support\ServiceProvider;
    
    class MD5HashServiceProvider extends ServiceProvider {
    
    /**
    * Register the service provider.
    *
    * @return void
    */
    public function register() {
    $this->app['hash'] = $this->app->share(function () {
    return new MD5Hasher();
    });
    
    }
    
    /**
    * Get the services provided by the provider.
    *
    * @return array
    */
    public function provides() {
    return array('hash');
    }
    
    }
    
  • config/app.php

    查找Illuminate\Hashing\HashServiceProvider::class,

    更改为App\Libraries\MD5HashServiceProvider::class,

  • AuthController.php

    添加protected $username = 'username';

    return Validator::make($data, [
                //'name' => 'required|max:255',
                'username' => 'required',
                'password' => 'required|confirmed|min:5',
            ]);
    
    return User::create([
                //'name' => $data['name'],
                'username' => $data['username'],
                'password' => md5($data['password']),
            ]);
    
  • App\Users.php

    更改protected $fillable = ['name', 'email', 'password'];

    protected $fillable = ['username', 'password'];

  • 别忘了运行composer dumpautoload

我不知道我在做什么是对还是错。

注意

【讨论】:

  • "classmap": ["database","app/libraries"],composer.json 在哪里? @Anggagewor "autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\\": "app/" } },这里?
猜你喜欢
  • 2015-02-23
  • 2016-05-13
  • 2014-03-30
  • 2016-04-18
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2015-11-21
相关资源
最近更新 更多