我想从没有Auth ::()的数据库中获取当前的userId,我不想从'/xxx/{id}'
有没有其他方法来获取没有Auth ::()的userId?
例如。 $userId = User::where('id', $id)->pluck('id');
这是我的auth :: controller声明:
public function getLogout(Request $request)
{
$redis = \Redis::connection();
$user = $request->user();
if ($user) {
$userID = $user->id;
}
// $userId = User::where('id', $id)->pluck('id');
dd($userID);
// $userId=Auth::user()->id;
$userSessions = $redis->smembers('users:sessions:' . $userId);
$currentSession = Session::getId();
foreach ($userSessions as $sessionId) {
if ($currentSession == $sessionId) {
continue;
}
$redis->srem('users:sessions:' . $userId, $sessionId);
$redis->del('laravel:' . $sessionId);
}
Auth::logout();
return redirect()->route('main');
}
答案 0 :(得分:1)
直接来自 docs :
或者,一旦用户通过身份验证,您就可以访问 通过
Illuminate\Http\Request
实例进行身份验证的用户。记得, 类型提示类将自动注入您的 控制器方法:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ProfileController extends Controller
{
/**
* Update the user's profile.
*
* @param Request $request
* @return Response
*/
public function updateProfile(Request $request)
{
if ($request->user()) {
// $request->user() returns an instance of the authenticated user...
}
}
}
所以,获取ID会是这样的:
$user = $request->user();
if ($user) {
$userID = $user->id;
}