Laravel 문자 등록 을 위 한 예제 코드
Laravel-china
지역사회 의summer
큰 신 이 쓴 책 이 있 었 습 니 다.그 안에서 그의 문법 과 사고방식 을 참고 하고easy-sms
가방 을 사 용 했 습 니 다.겨우 반나절 의 시간 이 걸 려 서 순조롭게 만 들 었 습 니 다.저녁 에 여러분 과 빨리 공유 하 겠 습 니 다.1.문자 운영 자 확인
나 는 사내 들 이 모두 구름 을 사용 하 는 것 을 보고 회사 가 이 문자 플랫폼 을 사용 하 는 것 을 주저 하지 않 고 추천 했다.그러나 다른 것 도 괜찮다.
먼저 스스로 계 정 을 등록 한 후에 이것 을 찾 으 세 요.
클릭 하여 접속 을 시작 하여 초보 가이드 과정 을 완성 합 니 다.
두 번 째 서명 과 템 플 릿 은 반드시 작성 해 야 합 니 다.제 가 아래 에 작성 한 것 과 같 습 니 다.
주의해 야 할 것 은 이 템 플 릿 은 반드시 당신 이 그때
easy-sms
가방 을 사용 해 야 할 때 설 정 된 문자 내용 이 이것 과 똑 같 아야 한 다 는 것 이다.그렇지 않 으 면 잘못 보고 할 것 이다.그리고 꼭 APIKEY 받 아야 돼.그때 env 에서 설정 합 니 다.
#
YUNPIAN_API_KEY=9c60bdd**********
2,설치easy-sms
패키지이 가방 을 이용 하면 문자 발송 기능 을 빠르게 실현 할 수 있 습 니 다.
composer require "overtrue/easy-sms"
이 구성 요 소 는 아직 LaravelServiceProvider
이 없 기 때문에 편리 하 게 사용 하기 위해 서 우 리 는 스스로 포장 할 수 있 습 니 다.우선 config 디 렉 터 리 에 파일 추가
easysms.php
config/easysms.php 에 다음 내용 을 작성 하 십시오.
<?php
return [
// HTTP ( )
'timeout' => 5.0,
//
'default' => [
// , :
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
//
'gateways' => [
'yunpian',
],
],
//
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'yunpian' => [
'api_key' => env('YUNPIAN_API_KEY'),
],
],
];
그리고 ServiceProvider 를 만 듭 니 다.
php artisan make:provider EasySmsServiceProvider
파일 app/providers/EasySmsServiceProvider.php 수정
<?php
namespace App\Providers;
use Overtrue\EasySms\EasySms;
use Illuminate\Support\ServiceProvider;
class EasySmsServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton(EasySms::class, function ($app) {
return new EasySms(config('easysms'));
});
$this->app->alias(EasySms::class, 'easysms');
}
}
마지막 으로config/app.php
providers
에 방금 만 든 서 비 스 를 추가 하여 기록 합 니 다.App\Providers\EasySmsServiceProvider::class,
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\EasySmsServiceProvider::class, //easy-sms
3.경로 와 대응 하 는 컨트롤 러 만 들 기먼저 루트 를 만 듭 니 다.저 희 는 aax 가 문자 인증 코드 를 요청 하 는 방법 과 등록 을 확인 하 는 논리 적 인 방법 이 필요 합 니 다.다음 과 같 습 니 다.
Route::group(['prefix' => 'verificationCodes', 'as' => 'verificationCodes.'], function() {
Route::post('register', 'VerificationCodesController@register')->name('register');
Route::get('ajaxregister', 'VerificationCodesController@ajaxregister')->name('ajaxregister');
});
경로 가 만 들 어 졌 습 니 다.명령 으로 contrller 를 만 들 었 습 니 다.
php artisan make:controller Home\VerificationCodesController
바로 안에register
와ajaxregister
방법 을 적 었 습 니 다.코드 논리
파일 수정
app/Home/VerificationCodesController.php
<?php
.
.
.
use Overtrue\EasySms\EasySms;
use App\Models\System\User;
class VerificationCodesController extends Controller
{
// 。
public function ajaxregister(VerificationCodeRequest $request, EasySms $easySms)
{
// ajax
$phone = $request->phone;
// 4 , 0
$code = str_pad(random_int(1, 9999), 4, 0, STR_PAD_LEFT);
try {
$result = $easySms->send($mobile, [
'content' => "【 】 {$code}。 , "
]);
} catch (Overtrue\EasySms\Exceptions\NoGatewayAvailableException $exception) {
$response = $exception->getExceptions();
return response()->json($response);
}
// key cache
$key = 'verificationCode_' . str_random(15);
$expiredAt = now()->addMinutes(10);
// 10 。
\Cache::put($key, ['mobile' => $mobile, 'code'=> $code], $expiredAt);
return response()->json([
'key' => $key,
'expired_at' => $expiredAt->toDateTimeString(),
], 201);
}
이렇게 하면 사용 자 는 문 자 를 받 을 수 있 고 전단 에 이것key
을 저장 하고 등록 양식 을 제출 할 때 배경 에 전달 하여 기한 이 지 났 는 지 판단 해 야 한다.다음은 기한 이 지 났 는 지,인증 코드 가 틀 렸 는 지 판단 하 는 것 이다.
public function register(VerificationCodeRequest $request)
{
// key
$verifyData = \Cache::get($request->verification_key);
// , 。
if(!$verifyData) {
return response()->json(['status' =>0, 'message'=> ' '], 422);
}
//
if (!hash_equals($verifyData['code'], $request->verification_code) {
return redirect()->back()->with('warning', ' ');
}
$user = User::create([
'mobile' => $verifyData['mobile'],
'password' => bcrypt($request->password),
]);
//
\Cache::forget($request->verification_key);
return redirect()->route('login')->with('success', ' !');
}
위의hash_equals
는 순차 공격 을 방지 할 수 있 는 문자열 비교 입 니 다~이상 이 나의 전체 과정 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
단순 Laravel+Vue.js에서 VueUI를 사용하여 로그인 및 등록Laravel에는 웹 팩과 같은 Laravel-Mix가 있는데, 이를 이용해서 Laravel에 Vue.js를 실현할 수 있다. 이번에는 몇 가지 명령을 통해 간단하게 VueUI로 로그인하여 로그인을 할 수 있습니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.