JellyBool

17773 经验值

我试了一下,上面的方法完全没有问题。比如在用户注册的时候,可以使用

$input['salt'] = str_random(32);

然后密码就直接使用:

$input['password'] = Hash::make($input['password'].$input['salt']);

之后保存,最后在验证的时候使用check()就可以了;

首先是非常感谢,帮忙的话,常来这里回复问题就非常感谢。。。至于开发嘛,后续看还能做下去不,能做下去的话应该就需要成员的加入了 @dearmadman

首先说明两个想法:
第一,上面的check方法不起作用?

 public function check($value, $hashedValue, array $options = []) {
        return $this->make($value) === $hashedValue;
    }

我看了validateCredentials(),貌似并没有什么影响?你是在哪出的问题?我实际来一把试试

你说说你的具体方案?就是你想怎样实现这个过程?我看看有没有解决方法....因为就目前的信息,我貌似还不清楚你要什么样的过程?比如我不知道你存数据库的盐值到底是怎么存的,它是怎么来的等等,整个你想实现的流程说一下?

虽然说我不提倡这种做法,但可以尝试下面的步骤:

  1. app/下创建一个MD5/文件夹。里面创建一个MD5Hasher类

(MD5Hasher.php)

class MD5Hasher implements Illuminate/Contracts/Hashing/Hasher {

    /**
     * Hash the given value.
     *
     * @param  string  $value
     * @return array   $options
     * @return string
     */
    public function make($value, array $options = []) {
        return md5($value);//你可以在这里实现你想要的加密方式
    }

    /**
     * Check the given plain value against a hash.
     *
     * @param  string  $value
     * @param  string  $hashedValue
     * @param  array   $options
     * @return bool
     */
    public function check($value, $hashedValue, array $options = []) {
        return $this->make($value) === $hashedValue;
    }

    /**
     * Check if the given hash has been hashed using the given options.
     *
     * @param  string  $hashedValue
     * @param  array   $options
     * @return bool
     */
    public function needsRehash($hashedValue, array $options = []) {
        return false;
    }

}

make your provider

命令行:

php artisan make:provider MD5HashServiceProvider

在这个文件的register()方法写上:

public function register()
    {
        $this->app['hash'] = $this->app->share(function () {
            return new MD5Hasher();
        });
    }

修改配置

config/app.php,注释下面这一行:

 Illuminate\Hashing\HashServiceProvider::class,

加上你的:

MD5HashServiceProvider::class

Happy Hacking

反正我个人是非常不提倡这个做法的,正是这种想法,我觉得我以后也会做不下去的。这么好的服务,付点费有何尝不可,要是每个人都是你这样想,laracasts早就不存在了,没人注定要为你免费提供知识和经验

Route::get('/articles/{id}','ArticleController@show');

请大写:ArticleController

写成这个形式:

 action('ArticleController@show',['id'=>$value->id])

你有定义show()方法的路由没有