我爱编程

Laravel学习日记2018-06-27

2018-06-27  本文已影响0人  Purson

简单强大的用户登录

用户认证机制

用户认证机制前提是使用了Laravel的默认Eloquent User模型,该模型有几个主要字段:id、name、password、email
。有了这些前置之后,如何进行用户登录认证呢?

1.建立用户会话控制器

注意控制器名称是驼峰复数形式

php artisan make:controller SessionsController

2.建立用户登录路由:

Route::get('login', 'SessionsController@create')->name('login');
Route::post('login','SessionsController@store')->name('login');
Route::delete('logout','SessionsController@destory')->name('destory');

3.建立登录页面(略过)

4.认证逻辑
首先在controller中引入$request变量,获取参数。

use Illuminate\Http\Request;

然后引入强大的认证类 Auth

use Auth;

引入认证类后在controller的store中进行注册或者判断

public function store(Request $request)
{
  $credentials=$this->validate($request, [```]);

if(Auth::attempt($credentials, $request->has('remember'))) //remember参数就是记住我的简单实现
{
   session->flash('success','欢迎回来');
 return redirect()->route('users.show', [Auth::user()])  //Auth::user获取已经认证用户的信息
}
else{
  session->flash('danger',"很抱歉,···");
  return redirect()->back();
}
}

这里有不明白的问题是$credentials 到底是返回什么值?
按照逻辑,这里应该返回的是一个数组,类似['email' => $email, 'password' => $password],才能理解下去。

5.注销
这里注销需要在用户界面引入Bootstrapt的dropdown list,注意在 resource/app.js 中引入js,才能正确下拉。

require('./bootstrapt')

另外需要注意在模版中加入隐藏域

{{csrf_field()}}
{{ method_field('DELETE')}}

因为浏览器不会发出DELETE的请求。
最后在controller 中的destroy中使用

Auth::logout();

就能直接退出了。

上一篇 下一篇

猜你喜欢

热点阅读