Php 如何仅在Laravel中使用url和哈希参数登录?(无用户名和密码)
我想在不输入表单的情况下发送用户自己的哈希链接登录,我已经尝试过了,但速度太慢,所以我不确定它是否有效: web.phpPhp 如何仅在Laravel中使用url和哈希参数登录?(无用户名和密码),php,laravel,authentication,url,hash,Php,Laravel,Authentication,Url,Hash,我想在不输入表单的情况下发送用户自己的哈希链接登录,我已经尝试过了,但速度太慢,所以我不确定它是否有效: web.php Route::get('link/{hash}', 'Auth\LoginController@loginless')->where('hash', '(.*)'); LoginController.php public function loginless($hash) { $response = array(); $respon
Route::get('link/{hash}', 'Auth\LoginController@loginless')->where('hash', '(.*)');
LoginController.php
public function loginless($hash)
{
$response = array();
$response['status'] = 500;
$response['url'] = null;
$username = '';
$password = '';
$arr_username = User::select('username','password')->get();
foreach ($arr_username as $arr){
if (Hash::check($arr->username, $hash)){
$username = $arr->username;
$password = $arr->password;
break;
}
}
if (\Auth::attempt(['username' => $username, 'password' => $password])) {
$response['status'] = 200;
$response['url'] = route('dashboard');
}
return $response;
}
有什么办法可以提高效率吗?(没有foreach是否可能?在您的情况下,您可以使用密钥加密,哈希::检查旨在花费很长时间来防止密码被轻易强制使用。你不能让它变得高效和安全。我建议不要向用户提供他们的散列,也不要创建一个可以通过GET请求登录用户的链接,因为任何应用程序(如聊天或电子邮件)都可能试图抓取页面以呈现预览。如果您绝对必须这样做,至少通过POST请求使用过期的一次性密码。(请看philo.com是如何做到的。)