//登入模块 Route::match(['get','post'],'/admin/login','Admin\ManagerController@login');
php artisan make:controller Admin\ManagerController
public function Login(Request $request){ if($request->isMethod('get')){ //显示视图 return view('Admin.login'); }elseif($request->isMethod(''post)){ //数据处理 //1.数据验证(用户名长度是否合法) //2.用户认证(用户名和密码在数据库中是否存在) } }
composer require mews/captcha
2. 인증 코드 기능 패키지를 laravel
//集成验证码类 Mews\Captcha\CaptchaServiceProvider::class,
다음 코드 추가 :
'Captcha' => Mews\Captcha\Facades\Captcha::class,
1명령 실행:
php artisan vendor:publish
return [ 'default' => [ 'length' => 5, 'width' => 120, 'height' => 36, 'quality' => 90, ], // ... ];
3.1 뷰에서 직접 생성
<img src="{{ captcha_src() }}" alt="laravle5.4의 데이터 검증 및 사용자 인증 구현 방법" > <a id="kanbuq" href="javascript:;">看不清,换一张</a> </p>
public function login(Request $request) { if($request->isMethod('get')){ //显示数据 return view('Admin.login'); }elseif($request->isMethod('post')){ //数据处理 //1.数据验证(用户名长度,是否为空) /* *参数一:$request对象【接收的数据】 * 参数二:验证规则 * */ //第一种方式: $this->validate($request,[ 'username'=>'required|min:2|max:16', 'password'=>'required|between:4,20', 'captcha'=>'required|size:5|captcha',//这里的captcha规则是继承的验证码插件自带的 ]); echo "验证通过"; } }
use Validator; public function login(Request $request) { if($request->isMethod('get')){ //显示数据 return view('Admin.login'); }elseif($request->isMethod('post')){ //数据处理 //1.数据验证(用户名长度,是否为空) /* *参数一:$request对象【接收的数据】 * 参数二:验证规则 * */ //第二种方式: $validator = Validator::make($request->all(),[ 'username'=>'required|min:2|max:16', 'password'=>'required|between:4,20', 'captcha'=>'required|size:5|captcha', ]); if($validator->fails()){ return redirect('/admin/login')//验证失败后跳转地址 ->withErrors($validator)//将错误信息一次性保存到session中 ->withInput();//保留原来输入的值 } echo "验证通过"; } }
@if (count($errors) > 0) <p class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </p> @endif
**참고: withErrors() 함수는 정보가 한 번에 세션에 저장되기 때문에 확인 오류 후에도 입력 상자의 값을 유지하려면 다음을 사용할 수 있습니다. old() 함수
예:<input>5. 영어로 표시되는 오류 메시지에 대해서는
laravel이 기본적으로 표시합니다. 오류 메시지를 중국어 정보로 표시하려면 언어를 다운로드해야 합니다. pack.주소: 중국어 언어 팩
5.2. lang 디렉토리의 파일 이름
'locale' => 'zh-CN'
'captcha' =>'验证码',
5.4를 추가할 수 있습니다. resources/lang/zh-CN/validation.php 파일의 옵션에 유효성 검사.captcha
의 번역을 추가하여 인증 코드가 올바른지 확인하세요필요합니다. 인증 규칙에 보안 문자를 추가하는 것이 제공되는 규칙입니다. 타사 플러그인
파일을 다음과 같이 수정하세요.
사용자 인증
1. 인증 외관을 도입하세요
//引入auth门面,用户认证 use Illuminate\Support\Facades\Auth;
public function login(Request $request) { if($request->isMethod('get')){ //显示数据 return view('Admin.login'); }elseif($request->isMethod('post')){ //数据处理 //1.数据验证(用户名长度,是否为空) /* *参数一:$request对象【接收的数据】 * 参数二:验证规则 * */ //第二种方式: $validator = Validator::make($request->all(),[ 'username'=>'required|min:2|max:16', 'password'=>'required|between:4,20', 'captcha'=>'required|size:5|captcha', ]); if($validator->fails()){ return redirect('/admin/login') ->withErrors($validator)//将错误信息一次性保存到session中 ->withInput();//保留原来输入的值 } //2.用户认证(用户名与密码在数据库中是否能查询到) $username =$request->input('username'); $password = $request->input('password'); if(Auth::guard('admin')->attempt(['username'=>$username,'password'=>$password])){ echo "认证成功"; //记录认证状态 }else{ echo "认证失败"; //跳转到登入页面 } } }
원인: SQL 쿼리가 it_users 테이블입니다
해결책: 인증 구성 수정
1. 보호 구성 사용자 정의 'guards' => [ 'web' => [
'driver' => 'session', 'provider' => 'users',
], 'api' => [ 'driver' => 'token',
'provider' => 'users',
], 'admin' =>[ 'driver' => 'session',
'provider' => 'admin',
//报错信息,我们加入这样一个数组,对应下面的provider的配置
],
],
2. ManagerController 수정. .php에서
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'admin' => [ 'driver' => 'eloquent', 'model' => App\Manager::class,//建立的模型是与这里的Manager名称一致 ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ],
public function login(Request $request) { if($request->isMethod('get')){ //显示数据 return view('Admin.login'); }elseif($request->isMethod('post')){ //数据处理 //1.数据验证(用户名长度,是否为空) /* *参数一:$request对象【接收的数据】 * 参数二:验证规则 * */ //第一种方式: /* $this->validate($request,[ 'username'=>'required|min:2|max:16', 'password'=>'required|between:4,20', 'captcha'=>'required|size:5|captcha',//这里的captcha规则是继承的验证码插件自带的 ]);*/ //第二种方式: $validator = Validator::make($request->all(),[ 'username'=>'required|min:2|max:16', 'password'=>'required|between:4,20', 'captcha'=>'required|size:5|captcha', ]); if($validator->fails()){ return redirect('/admin/login') ->withErrors($validator)//将错误信息一次性保存到session中 ->withInput();//保留原来输入的值 } //2.用户认证(用户名与密码在数据库中是否能查询到) $username =$request->input('username'); $password = $request->input('password'); //使用自定义的guard【admin】 if(Auth::guard('admin')->attempt(['username'=>$username,'password'=>$password])){ return redirect('/admin/index'); //记录认证状态 }else{ echo "认证失败"; //跳转到登入页面 return redirect('/admin/login') ->withErrors(['loginError'=>'用户名或密码错误']) ->withInput(); } } }
php artisan make:model Manager
소개 인터페이스:
<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class Manager extends Model{ //3.定义属性:代表软删除的字段 protected $data = ['deleted_at']; protected $table = "manager"; protected $primaryKey = "mg_id"; protected $fillable = ['username','password','mg_role_ids','mg_sex','mg_phone','mg_email','mg_remark']; }클래스 내에서 use 키워드 사용: 특성 포함, 계약 구현
use \Illuminate\Auth\Authenticatable;참고: 참고: 인증 성공 후 로그인 페이지로 돌아갈 때 인증 코드가 정상적으로 표시되지 않으면 세션을 삭제하세요.
관련 권장사항:
다양한 데이터 검증을 구현하는 PHP의 인스턴스 분석
php 양식 데이터 검증 클래스, php 양식 검증_PHP 튜토리얼양식 데이터 검증을 구현하는 PHP 코드 class_php 예
위 내용은 laravle5.4의 데이터 검증 및 사용자 인증 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!