Laravel学习笔记(7)用户登陆登出相关

  1. 在控制器中用户登录在这里插入图片描述
public function store(Request $request)
    {
        $data = $request->validate([
            'name' => 'required|min:3',
            'email' => 'required|unique:users|email',
            'password' => 'required|min:5|confirmed'
        ]);

		// 加密数据以方便后面的登陆验证处理
		$data['password'] = bcrypt($data['password']);
		// 将表单数据验证后使用create方法登录到数据库中
        User::create($data);  

        // Laravel用户验证登录函数
		if(\Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
			// 向session中存入一个闪存变量,以便前端返回成功信息
            session()->flash('success', '成功注册并自动登录');
        } else {
            session()->flash('danger', '失败');
        }
        
		// 重定向到home页面
        return redirect()->route('home');
    }

attempt中,密码会自动加密(bcrypt)后再和数据库中的数据进行对比,所以要传入原始数据

  1. 前端页面(home)中显示成功登录信息
@foreach(['success', 'danger'] as $t)
    @if(session()->has($t))
        <div class="alert alert-{{$t}}" role="alert">
            <strong>{{session()->get($t)}}</strong>
        </div>
    @endif
@endforeach
  1. 前端页面(home)中注册登陆按钮变为登出
    在这里插入图片描述
<form class="form-inline my-2 my-lg-0">
    @auth
        <a href="{{route('user.logout')}}" class="btn btn-danger my-2 my-sm-0 mr-2">登出</a>
    @else
        <a href="{{route('user.create')}}" class="btn btn-danger my-2 my-sm-0 mr-2">注册</a>
        <a href="{{route('user.login')}}" class="btn btn-success my-2 my-sm-0 mr-2">登陆</a>
    @endauth
</form>
  1. 登陆按钮同理,其中
Route::get('login', 'LoginController@login')->name('login');
Route::post('login', 'LoginController@store')->name('login');

get和post同时命名login时不会发生错误,因为Laravel会自动区别。

return back(); // 返回之前的页面
发布了40 篇原创文章 · 获赞 0 · 访问量 786

猜你喜欢

转载自blog.csdn.net/qj4865/article/details/104173065
今日推荐