laravel登录后跳转回登录前页面,以及与dcat admin共用后台用户表
作者:总管理员
时间:2023-03-16 06:10:52
阅读数:747人阅读
laravel9.x框架,要实现登录后自动跳转回登录前访问的页面,只需在app/Http/Controllers/Auth/LoginController.php中添加一个方法:
// 打开登录页面
public function showLoginForm()
{
session(['url.intended'=>url()->previous()]);
return view('auth.login');
}
另外,默认登录使用的是邮箱,我们修改为username:
public function username(){
return 'username';
}
前台的模板中也要修改resources/views/auth/login.blade.php:
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="row mb-3">
<label for="username" class="col-md-4 col-form-label text-md-end">用户名</label>
<div class="col-md-6">
<input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ config('app.url') == 'https://tb.kzhgzs.cn' ? 'admin' : old('username') }}" required autocomplete="username" autofocus>
@error('username')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
共用dcat-admin的admin_users表,可修改app\Modes\User.php模型:
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\URL;
class User extends Authenticatable implements MustVerifyEmail
{
use HasApiTokens, HasFactory, Notifiable, HasDateTimeFormatter;
protected $table = 'admin_users';
protected $fillable = ['username', 'password', 'name', 'avatar', 'email', 'email_verified_at'];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
public function getAvatar()
{
$avatar = $this->avatar;
if ($avatar) {
if (! URL::isValidUrl($avatar)) {
$avatar = Storage::disk(config('admin.upload.disk'))->url($avatar);
}
return $avatar;
}
return admin_asset(config('admin.default_avatar') ?: '@admin/images/default-avatar.jpg');
}
/**
* A user has and belongs to many roles.
*
* @return BelongsToMany
*/
public function roles(): BelongsToMany
{
$pivotTable = config('admin.database.role_users_table');
$relatedModel = config('admin.database.roles_model');
return $this->belongsToMany($relatedModel, $pivotTable, 'user_id', 'role_id')->withTimestamps();
}
}
然后,注册模板register.blade.php要修改:
<form method="POST" action="{{ route('register') }}">
@csrf
<div class="row mb-3">
<label for="username" class="col-md-4 col-form-label text-md-end">用户名</label>
<div class="col-md-6">
<input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus>
@error('username')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
记录完毕。
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱: 2554509967@qq.com