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();
就能直接退出了。