Laravel 5.2 - 登录和用户会话
Laravel 5.2 - login and user session
这似乎是一个非常非常基本的问题,但我没能解决。上次我使用 laravel 大约是 8 个月前,有些东西现在无法使用这个基本的登录 - 验证东西。
我正在使用 laravel 5.2,这是我的登录信息:
路线:
Route::post('login', [
'as' => 'post_login',
'uses' => 'Auth\AuthController@login'
]);
Auth\AuthController.php:
public function login(Request $request)
{
if(Auth::attempt([
'email' => $request->get('email'),
'password' => $request->get('password'),
'active' => 1
]))
{
$user = Auth::user();
var_dump($user);
}
else
{
return 'Could not log in';
}
}
当我用注册用户登录时,它会正确显示用户,现在一切都很完美。
但是,问题是在主菜单中我看不到用户名,而是 "login" - "register" 按钮。即使我单击这些按钮之一,也没有任何反应,视图不会改变,也不会执行任何操作。
我的主菜单标记:
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<!-- Collapsed Hamburger -->
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Branding Image -->
<a class="navbar-brand" href="{{ url('/') }}">
Fotopredio
</a>
</div>
<div class="collapse navbar-collapse" id="app-navbar-collapse">
<!-- Left Side Of Navbar -->
<ul class="nav navbar-nav">
<li><a href="{{ url('/home') }}">Home</a></li>
</ul>
<!-- Right Side Of Navbar -->
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
@if (Auth::guest())
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('registration') }}">Registro</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->email }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li><a href="{{ url('/logout') }}"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li>
</ul>
</li>
@endif
</ul>
</div>
</div>
</nav>
您可以看到 @if(Auth::guest()) ... 它不起作用,即使我登录时,我也可以看到登录和注册按钮,当我单击它们时没有任何反应。我什至无法退出。
EDIT
我的欢迎页面中有这个标记,用户登录后应该看到的页面。
@extends('layouts.app')
@section('title', 'Home')
@section('body')
<?php
if (Auth::check()) {
echo "Loged In";
} else {
echo "not loged in";
}
?>
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">Welcome</div>
<div class="panel-body">
Your Application's Landing Page.
</div>
</div>
</div>
</div>
</div>
@endsection
即使我登录后,它仍显示 NOT LOGED IN
您的 Welcome
路由也需要在您的网络 中间件 中。对 laravel 5.2 的更改意味着会话仅 called/run 在该网络 中间件 中。
因此,如果 Welcome
不在网络 中间件 中,您将无法登录。(Matt 对此有很好的 link改变 here)
这似乎是一个非常非常基本的问题,但我没能解决。上次我使用 laravel 大约是 8 个月前,有些东西现在无法使用这个基本的登录 - 验证东西。
我正在使用 laravel 5.2,这是我的登录信息:
路线:
Route::post('login', [
'as' => 'post_login',
'uses' => 'Auth\AuthController@login'
]);
Auth\AuthController.php:
public function login(Request $request)
{
if(Auth::attempt([
'email' => $request->get('email'),
'password' => $request->get('password'),
'active' => 1
]))
{
$user = Auth::user();
var_dump($user);
}
else
{
return 'Could not log in';
}
}
当我用注册用户登录时,它会正确显示用户,现在一切都很完美。
但是,问题是在主菜单中我看不到用户名,而是 "login" - "register" 按钮。即使我单击这些按钮之一,也没有任何反应,视图不会改变,也不会执行任何操作。
我的主菜单标记:
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<!-- Collapsed Hamburger -->
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<!-- Branding Image -->
<a class="navbar-brand" href="{{ url('/') }}">
Fotopredio
</a>
</div>
<div class="collapse navbar-collapse" id="app-navbar-collapse">
<!-- Left Side Of Navbar -->
<ul class="nav navbar-nav">
<li><a href="{{ url('/home') }}">Home</a></li>
</ul>
<!-- Right Side Of Navbar -->
<ul class="nav navbar-nav navbar-right">
<!-- Authentication Links -->
@if (Auth::guest())
<li><a href="{{ route('login') }}">Login</a></li>
<li><a href="{{ route('registration') }}">Registro</a></li>
@else
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
{{ Auth::user()->email }} <span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li><a href="{{ url('/logout') }}"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li>
</ul>
</li>
@endif
</ul>
</div>
</div>
</nav>
您可以看到 @if(Auth::guest()) ... 它不起作用,即使我登录时,我也可以看到登录和注册按钮,当我单击它们时没有任何反应。我什至无法退出。
EDIT
我的欢迎页面中有这个标记,用户登录后应该看到的页面。
@extends('layouts.app')
@section('title', 'Home')
@section('body')
<?php
if (Auth::check()) {
echo "Loged In";
} else {
echo "not loged in";
}
?>
<div class="container">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="panel panel-default">
<div class="panel-heading">Welcome</div>
<div class="panel-body">
Your Application's Landing Page.
</div>
</div>
</div>
</div>
</div>
@endsection
即使我登录后,它仍显示 NOT LOGED IN
您的 Welcome
路由也需要在您的网络 中间件 中。对 laravel 5.2 的更改意味着会话仅 called/run 在该网络 中间件 中。
因此,如果 Welcome
不在网络 中间件 中,您将无法登录。(Matt 对此有很好的 link改变 here)