LARAVEL - 登录时显示用户的名称

时间:2018-02-16 07:36:39

标签: php laravel laravel-5

我已经创建了一个登录页面'admin-login',在进行身份验证时会重定向到页面'admin'。我想在“管理员”页面上显示登录用户的名称。

看看我的代码: 控制器:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->get();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>" "]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}

我不知道在这里写什么'((''name'=>“”]);'。 Plz帮助我。

查看:

<ul class="nav navbar-nav navbar-right">
    <!-- Authentication Links -->
    @guest
        <li><a href="{{ route('login') }}">Login</a></li>
        <li><a href="{{ route('register') }}">Register</a></li>
    @else
        <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" aria-haspopup="true">
                {{ Session::get('name') }} <span class="caret"></span>
            </a>
        </li>
</ul>

6 个答案:

答案 0 :(得分:2)

您可以通过Auth::user()

获取当前经过身份验证的用户

他的名字就像

Auth::user()->name;

答案 1 :(得分:1)

尝试使用以下代码:

public function login(Request $req) {
    $email = $req->input('email');
    $password = $req->input('password');

    $checkLogin = DB::table('admin')->where(['email'=>$email,'password'=>$password])->first();

    if(count($checkLogin) > 0) {
        return view('admin')->with(['name'=>$checkLogin->name]);
    }

    else {
       // echo "Login Failed!";
       return Redirect::route('admin-login')->with(['error'=> "Invalid email or Password!!"]);
    }
}

答案 2 :(得分:0)

如果您使用laravel默认身份验证模型,则只需使用 {{Auth :: user() - &gt; name}} ,它将打印logedin用户的名称。

答案 3 :(得分:0)

尝试在控制器中使用它:

return view('admin', ['name' => $checkLogin]);

然后在视图中,您需要创建一个foreach循环:

@foreach($checkLogin as $key => $value)
    <p> {{ $value->email }} </p>
    <p> {{ $value->name }} </p>

@endforeach

此外,如果您使用laravel的默认身份验证:

,则可以使用此功能
{{ Auth::user()->name }}

答案 4 :(得分:0)

在我的情况下,我使用了身份验证登录命令来使laravel框架执行登录系统。 您以

登录:

{{ Auth::user()->name }}</div>

答案 5 :(得分:-1)

您已经说Auth::user()->name对您不起作用,而且您保持密码不会对其进行散列。此外,您似乎正在使用多个表来存储用户。在这种情况下,Auth::check()@guest@auth和其他指令将不适合您。

您需要添加新的防护,修改一些Laravel代码并手动登录用户。但是,由于您是Laravel的新手,我认为更简单的解决方案是手动检查用户:

$admin = DB::table('admin')->where(['email' => $email, 'password' => $password])->first();
if (empty($admin)) {
    return redirect()->route('admin-login')->with('error', 'Invalid email or Password!');
}

您还可以将变量传递给视图,并使用session:

在请求之间共享
session(['user' => $admin]);

而不是@auth

if (session('user'))

而不是@guest

if (empty(session('user')))

并显示管理员名称:

{{ session('user')->name }}

如果您还想在没有用户时避免错误,请使用optional()帮助程序:

{{ optional(session('user'))->name }}

如果用户经过身份验证,则会打印一个名称,如果不是,则会打印任何内容。

我真的建议您使用brcypt()帮助程序散列密码,并为所有用户使用一个表,并将角色分配给用户。在这种情况下,您将能够使用内置的身份验证系统,用户的凭据将是安全的。