laravel-admin创建账号密码
protected function form()
{
$form = new Form(new JianguanUser);
$form->display('id', __('ID'));
$form->text('name', __('姓名'))->placeholder('非登录账号');
$form->text('tel', __('联系电话'));
$form->select('danwei_id', __('所属部门'))->options(JianguanDanwei::orderBy('id', 'desc')->pluck('name', 'id'));
$form->text('username', __('用户账号'));
// $form->text('password', __('用户密码'))->default( Str::random(10, 'alnum') )->help('随机密码可修改');
// 密码字段
$form->password('password', '密码')
->rules('confirmed|min:6')
->default('')
->help('至少6位字符,留空则不修改');
// 确认密码字段
$form->password('password_confirmation', '确认密码')
->default('')
->attribute('autocomplete', 'new-password');
// 其他字段...
$form->display('created_at', __('创建时间'));
$form->display('updated_at', __('更新时间'));
// 保存时的处理
$form->saving(function (Form $form) {
if (empty($form->password)) {
$form->model()->offsetUnset('password');
}
});
//
// $form->text('title', '标题')->rules('required');
// $form->select('assigned_to_id', '分配用户')->options(Bumen::all()->pluck('name', 'id'))->rules('required');
return $form;
}
Laravel修改器命名规则:set + 字段名(首字母大写) + Attribute
模型中加密
数据逻辑归模型,表单逻辑归控制器
-
模型层实现密码加密的核心是Laravel 字段修改器,命名严格遵循 setPasswordAttribute 规则,非空值自动 bcrypt 加密; 2.该方式实现全局加密复用,任何地方操作 AdminUser 模型的 password 字段,都会自动加密,无需重复写逻辑。
<? namespace App\Admin\Models; use Encore\Admin\Auth\Database\Administrator; // 继承Laravel-Admin原生管理员基类 class AdminUser extends Administrator { // 可批量赋值字段(保留之前添加的nickname,必须包含password) protected $fillable = [ 'nickname', 'username', 'password', 'avatar', 'remember_token' ]; // 隐藏敏感字段(返回数组时不显示密码、记住令牌) protected $hidden = [ 'password', 'remember_token', ]; /********************* 核心:密码自动加密修改器 *********************/ // Laravel修改器命名规则:set + 字段名(首字母大写) + Attribute public function setPasswordAttribute($value) { // 逻辑:只有密码值非空时,才加密存储;空值则不处理(编辑时留空密码的核心) if (!empty($value)) { $this->attributes['password'] = bcrypt($value); } // 若$value为空,直接不赋值,数据库原有密码不会被覆盖 } // 可选:获取器,比如隐藏密码的部分字符(列表页展示时用) public function getPasswordShowAttribute() { return '******'; // 列表页如果要展示密码,只显示星号 } }
最近访问时间:2026-02-06 23:38:57