laravel auth如何实现的
程序员文章站
2022-06-01 14:55:12
...
//\app\Http\Controllers\Auth\AuthController.php
/**
* Create a new authentication controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\Registrar $registrar
*/
public function __construct(Guard $auth, Registrar $registrar,Request $request)
{
$this->auth = $auth;
$this->registrar = $registrar;
$this->request = $request;
}
public function postRegister()
{
$data = $this->request->all();
//调用App\Services\Registrar里的validator
$validator = $this->registrar->validator($data);
if ($validator->fails()) {
$this->throwValidationException(
$this->request, $validator
);
}
$this->auth->login($this->registrar->create($data));//这里的login哪里实现的?
return redirect('/user');
}
//\app\Providers\AppServiceProvider.php
public function register()
{
//绑定实现Illuminate\Contracts\Auth\Registrar接口的类App\Services\Registrar,但没绑定auth的
$this->app->bind(
'Illuminate\Contracts\Auth\Registrar',
'App\Services\Registrar'
);
}
回复内容:
//\app\Http\Controllers\Auth\AuthController.php
/**
* Create a new authentication controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\Registrar $registrar
*/
public function __construct(Guard $auth, Registrar $registrar,Request $request)
{
$this->auth = $auth;
$this->registrar = $registrar;
$this->request = $request;
}
public function postRegister()
{
$data = $this->request->all();
//调用App\Services\Registrar里的validator
$validator = $this->registrar->validator($data);
if ($validator->fails()) {
$this->throwValidationException(
$this->request, $validator
);
}
$this->auth->login($this->registrar->create($data));//这里的login哪里实现的?
return redirect('/user');
}
//\app\Providers\AppServiceProvider.php
public function register()
{
//绑定实现Illuminate\Contracts\Auth\Registrar接口的类App\Services\Registrar,但没绑定auth的
$this->app->bind(
'Illuminate\Contracts\Auth\Registrar',
'App\Services\Registrar'
);
}
Login哪里实现\Illuminate\Auth\Guard
第430行
public function login(UserContract $user, $remember = false)
{
$this->updateSession($user->getAuthIdentifier());
// If the user should be permanently "remembered" by the application we will
// queue a permanent cookie that contains the encrypted copy of the user
// identifier. We will then decrypt this later to retrieve the users.
if ($remember) {
$this->createRememberTokenIfDoesntExist($user);
$this->queueRecallerCookie($user);
}
// If we have an event dispatcher instance set we will fire an event so that
// any listeners will hook into the authentication events and run actions
// based on the login and logout events fired from the guard instances.
$this->fireLoginEvent($user, $remember);
$this->setUser($user);
}
还有啥问题么= =?
看源代码:https://github.com/laravel/framework/tree/5.1/src/Illuminate/Auth
自己扩展:http://my.oschina.net/zgldh/blog/379461#OSC_h2_1
参考第三方实现:https://cartalyst.com/manual/sentinel/2.0
推荐阅读
-
相机标定的原理、程序实现、畸变矫正(四,畸变矫正如何不丢失像素点)
-
shell - php的cli如何实现读取用户输入,但隐藏这段字符输出
-
ThinkPHP6源码:从Http类的实例化看依赖注入是如何实现的
-
倒计时n个小时候修改订单状态,这种逻辑是如何实现的?
-
如何把Laravel 5 的应用移植到SAE上
-
如何用supervisor守护php-fpm主进程以实现php-fpm的自动重启
-
如何用js 实现依赖注入的思想,后端框架思想搬到前端来_javascript技巧
-
如何利用CSS实现图片的透明效果_html/css_WEB-ITnose
-
利用Python如何实现数据驱动的接口自动化测试
-
Jquery编程开发中可多选的下拉框如何实现?