2017-07-14 93 views
1

目前我有一個Laravel應用程序進行身份驗證。我想知道是否可以有另一個PHP應用程序(獨立於框架)使用相同的用戶表進行身份驗證。我不想再次使用Laravel,因爲這將是一個過度工程。「普通」php應用程序可以使用laravel用戶表進行身份驗證嗎?

我主要關心的是密碼的哈希如何在Laravel中完成。我可以配置普通的PHP應用程序以相同的方式散列密碼嗎?如果是這樣,我該怎麼做?

+2

潛入Laravel源的功能,找到密碼散列如何。 –

+0

如果你應該有你的純PHP代碼請求重定向到您的身份驗證端點Laravel內部,然後讓Laravel做身份驗證,並返回一個響應初始PHP代碼,然後繼續,因爲它應該成功驗證之後或引發錯誤回客戶端如果不成功。 – victor

+0

@victor我沒有想過這個!聽起來像它可能工作.. –

回答

2

Laravel使用password_hash()創建密碼散列(見make()方法源代碼):

password_hash('somePassword555', PASSWORD_BCRYPT); 

而且password_verify()檢查密碼哈希(見check()方法源代碼):

password_verify('somePassword555', $hashedPasswordFromDB); 
+1

謝謝!只測試了一些已經存儲的密碼的這些功能,他們工作! –

1

這是你想看看 供應商/ laravel /框架/ src目錄/照亮/散列/ BcryptHasher.php

文件

這些都是他們正在使用,password_hash();password_verify();

function make($value, array $options = []) 
    { 
     $cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds; 
    $hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => $cost]); 

    if ($hash === false) { 
     throw new RuntimeException('Bcrypt hashing not supported.'); 
    } 

    return $hash; 
} 

function check($value, $hashedValue, array $options = []) 
{ 
    if (strlen($hashedValue) === 0) { 
     return false; 
    } 

    return password_verify($value, $hashedValue); 
} 
+0

謝謝!這會有很大的幫助!正在尋找這些完全錯誤的地方 –

相關問題