laravel 用户身份验证
一、相关文件:
/config/auth.php // 验证配置,包含:验证方式、用户模型类、用户表名 /App/User.php // 用户 Eloquent 模型,对应用户表名 users,当 auth.php 配置认证驱动为 Eloquent 时,配合一起使用。 // 使用官方认证,密码应最少 60 位,并需要包含一个叫做 remember_token 的字段用于存储记住登录状态的 session token。
// 记住登录状态:$table->rememberToken();/App/Http/Controllers/Auth/AuthController // 认证控制器一,处理新用户的注册和验证/App/Http/Controllers/Auth/PasswordController // 认证控制器二,处理用户找回密码
二、使用方法:
1、注册路由:laravel默认没有指定登录、注册的路由地址,故需要手动指定:
Route::get("auth/login", "AuthAuthController@getLogin"); //登录表单 Route::post("auth/login", "AuthAuthController@postLogin"); //登录处理 Route::get("auth/logout", "AuthAuthController@getLogout"); //退出登录 Route::get("auth/register", "AuthAuthController@getRegister"); //注册表单 Route::post("auth/register", "AuthAuthController@postRegister //注册处理
2、提供视图:在 resources/views/auth 中,创建 login.blade.php 和 register.blade.php
字段名:邮箱(登录账号):email 密码:password 确认密码:password_confirmation 用户名为:name 记录登录:remember
3、认证:
(1) 自动认证:默认使用 AuthController,提供了新用户验证规则 validator 和 添加用户 create两个方法,可以自行修改已适应需求。
(2) 手动认证:
public function authenticate() { if (Auth::attempt(["email" => $email, "password" => $password]), $isRememberLogin) { // 认证通过... return redirect()->intended("dashboard"); } }
4、跳转:
认证成功后默认跳转到 /home 路由,可以在 routers.php 中定义该路由实现定制,也可以在控制器中修改:
protected $redirectPath = "/dashboard"; // 自定义登录成功跳转位置,默认是:/home protected $loginPath = "/login"; // 自定义登录失败后跳转位置,默认是:/auth/login
5、获取认证信息:
Auth::check(); //是否认证通过 Auth::login($user); //手动登录 Auth::loginUsingId(); //使用ID登录 Auth::once($userInfoArray); //临时登录,完成即退 Auth:logout(); // 退出登录 Auth::viaRemember(); // 是否记住登录 $userInfo = Auth::user(); // 得到认证用户实例 $userInfo = $request->user(); // 登录成功后通过 Request 门面获取
默认在登录失败N次后将有一分钟不能登录,它基于用户名|邮箱+IP。
三、路由保护(访问权限):使用 auth 中间件来控制可以访问某些路由的用户
1、使用方法:
Route::get("/path", [ "middleware" => "auth", "uses" => "SomeController@method "]);
或者:直接在控制器中使用 middleware
public function __construct(){ $this->middleware("auth"); }
四、重置密码:默认使用邮箱认证,添加以下路由:
// 重置密码邮件... Route::get("password/email", "AuthPasswordController@getEmail"); Route::post("password/email", "AuthPasswordController@postEmail"); // 密码重置... Route::get("password/reset/{token}", "AuthPasswordController@getReset"); Route::post("password/reset", "AuthPasswordController@postReset");
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: laravel身份验证-Auth的使用
- 下一篇: 关于laravel中auth建立时候的问题