我想在用户登录管理面板时在用户面板上显示联机状态。
有人有想法请帮助我吗?
答案 0 :(得分:0)
您可以使用
身份验证指令
@auth
和@guest
指令可用于快速确定当前用户是否已通过身份验证或是访客:
@auth
<a href="#">
<i class="fa fa-circle text-success"></i>
Online
</a>
@endauth
@guest
// The user is not authenticated...
@endguest
编辑(如果要获取用户列表)
步骤:1创建一个中间件 使用此命令创建中间件LastUserActivity。
php artisan make:middleware LastUserActivity
添加一些代码检查用户是否在线
\\App\Http\Middleware\LastUserActivity.php
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
use Cache;
use Carbon\Carbon;
class LastUserActivity
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check()) {
$expiresAt = Carbon::now()->addMinutes(1);
Cache::put('user-is-online-' . Auth::user()->id, true, $expiresAt);
}
return $next($request);
}
}
步骤:2将一个类添加到内核中
将一个类添加到middlewareGroups的内核文件中
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\LastUserActivity::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
步骤:3在用户模型中添加一个功能
public function isOnline()
{
return Cache::has('user-is-online-' . $this->id);
}
不要忘记在use Cache;
模型中添加User
在顶部;
步骤:4在Laravel应用程序中在线或离线检查用户 在视图中使用isOnline函数。
@if($user->isOnline())
user is online!!
@endif