目录
▸
入门
简介
安装
1.x升级指南
版本升级
快速开始
开发前必读
主题与颜色
静态资源
视图与自定义页面
多应用(多后台)
JS组件
常见问题
Laravel Octane
▸
数据表格
基本使用
列的使用和扩展
列的显示和扩展
行的使用和扩展
工具栏
树状表格
组合表头
数据来源以及查询条件
关联关系
查询过滤
列过滤器
快捷搜索
规格筛选器
数据导出
快捷创建
行内编辑
事件
字段翻译
数据软删除
头部和脚部
表格异步渲染
▸
数据表单
基本使用
图片/文件上传
字段的使用
字段扩展
数据源
表单弹窗
关联关系
JSON表单
分步表单
表单验证
工具表单
事件以及表单响应
初始化
表单布局
字段翻译
字段动态显示
▸
数据详情
基本使用
字段显示
关联关系
字段显示扩展
初始化
字段翻译
▸
模型树
基本使用
▸
数据仓库
基本使用
▸
动作
基本使用
数据表格
数据表单
数据详情
模型树
▸
多语言
基本使用
▸
开发扩展
扩展基本使用
开发扩展
▸
页面组件
异步加载
图表
数据统计卡片
模态窗(Modal)
工具表单
下拉菜单
单/复选框
选项卡
警告框
提示窗
Markdown
卡片
▸
区块
区块基本使用
▸
动作以及表单响应
动作以及表单响应
▸
权限控制
权限控制
▸
菜单
菜单基本使用
▸
帮助函数
帮助函数
▸
开发工具
基本使用
▸
自定义登陆认证
自定义登录
▸
自定义头部导航
自定义头部导航条
▸
更新日志
BETA版本更新日志
更新日志
内容导航
1.x
2.x
自定义登录
创建时间:2024-06-26 15:26:42 / 更新时间:2024-06-26 15:26:42
# 自定义登录 ### 重写登录页面和登录逻辑 方式一,重写登录控制器方法: 默认的登录控制器用的是`App\Admin\AuthController`这个类,可以通过配置参数`admin.auth.controller`进行修改 ```php <?php namespace App\Admin\Controllers; use Dcat\Admin\Controllers\AuthController as BaseAuthController; class AuthController extends BaseAuthController { // 自定义登录view模板 protected $view = 'admin.login'; // 重写你的登录页面逻辑 public function getLogin(Content $content) { ... } ... } ``` 方式二,覆写路由: 在路由文件`app/Admin/routes.php`中,覆盖掉登录页面和登录逻辑的路由,即可实现自定义的功能 ```php Route::group([ 'prefix' => config('admin.prefix'), 'namespace' => Admin::controllerNamespace(), 'middleware' => ['web', 'admin'], ], function (Router $router) { $router->get('auth/login', 'AuthController@getLogin'); $router->post('auth/login', 'AuthController@postLogin'); }); ``` 在自定义的路由器AuthController中的`getLogin`、`postLogin`方法里分别实现自己的登录页面和登录逻辑。 ### 重写laravel认证 如果不使用`Dcat Admin`内置的认证登录逻辑,可以参考下面的方式自定义登录认证逻辑 首先要先定义一个`user provider`,用来获取用户身份, 比如`app/Providers/CustomUserProvider.php`: ```php <?php namespace App\Providers; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Auth\UserProvider; class CustomUserProvider implements UserProvider { public function retrieveById($identifier) {} public function retrieveByToken($identifier, $token) {} public function updateRememberToken(Authenticatable $user, $token) {} public function retrieveByCredentials(array $credentials) { // 用$credentials里面的用户名密码去获取用户信息,然后返回Illuminate\Contracts\Auth\Authenticatable对象 } public function validateCredentials(Authenticatable $user, array $credentials) { // 用$credentials里面的用户名密码校验用户,返回true或false } } ``` 在方法`retrieveByCredentials`和`validateCredentials`中, 传入的`$credentials`就是登录页面提交的用户名和密码数组,然后你可以使用`$credentials`去实现自己的登录逻辑 Interface `Illuminate\Contracts\Auth\Authenticatable`的定义如下: ```php <?php namespace Illuminate\Contracts\Auth; interface Authenticatable { public function getAuthIdentifierName(); public function getAuthIdentifier(); public function getAuthPassword(); public function getRememberToken(); public function setRememberToken($value); public function getRememberTokenName(); } ``` 上面interface每个方法的解释参考[adding-custom-user-providers](https://laravel.com/docs/5.5/authentication#adding-custom-user-providers) 定义好了`User provider`之后,打开`app/Providers/AuthServiceProvider.php`注册它: ```php <?php namespace App\Providers; use Illuminate\Support\Facades\Auth; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; class AuthServiceProvider extends ServiceProvider { /** * Register any application authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); Auth::provider('custom', function ($app, array $config) { // Return an instance of Illuminate\Contracts\Auth\UserProvider... return new CustomUserProvider(); }); } } ``` 最后修改一下配置,打开`config/admin.php`,找到`auth`部分修改: ```php 'auth' => [ 'guards' => [ 'admin' => [ 'driver' => 'session', 'provider' => 'admin', ] ], // 修改下面 'providers' => [ 'admin' => [ 'driver' => 'custom', ] ], ], ``` 这样就完成了自定义登录认证的逻辑,自定义登陆算是laravel中比较复杂的部分,需要开发者有耐心的一步步调试完成。
上一文章
下一文章
返回顶部
返回主页
返回文档展示页