首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(1/1)验证我的电子邮件地址时使用NotFoundHttpException

(1/1)验证我的电子邮件地址时使用NotFoundHttpException
EN

Stack Overflow用户
提问于 2017-08-07 09:44:54
回答 2查看 76关注 0票数 0

我是新接触laravel 5.4的,我正在尝试练习一些laravel的东西。我想创建一个电子邮件验证功能,当申请者注册和验证他/她的电子邮件时,申请者可以登录。但是当我点击下面的链接来验证申请者的电子邮件地址时,我遇到了这个错误。我不知道是不是我搞乱了路线,很难解决这个问题。以下是用于验证电子邮件地址http://127.0.0.1:8000/register/verify/KafEACL1U3DxoprDI0aIVpAyM3DY8Q的链接。

以下是我的路径中的代码:

代码语言:javascript
运行
复制
Route::group(['prefix' => 'applicant', 'namespace' => 'Applicant'], function () {
    Route::get('/', 'LoginController@showLoginForm');
    Route::post('/login', 'LoginController@authenticate')->name('applicant.login');
    Route::post('/logout', 'LoginController@logout')->name('logout');
    Route::get('/home', 'HomeController@index')->name('applicant.home');
    Route::get('/signup', 'LoginController@signup')->name('applicant.signup');
    Route::post('/register_check', 'LoginController@store')->name('register_check');
    Route::resource('applications', 'ApplicationController',
         ['as' => 'applicant']);
    Route::get('/verify', 'LoginController@confirm')->name('applicant.verify');
        //secured file view only by customer-relations
    Route::get('applications/print/{application_number}', [
         'as'         => 'applicant.application-form.print',
         'uses'       => 'ApplicationController@printApplicationConfirmation',
    ]);
});

下面是我的控制器中的代码:

代码语言:javascript
运行
复制
public function store(CreateApplicantRequest $request)
    {
        $input = $request->all();

        $confirmation_code = str_random(30);

        $data = array('confirmation_code'=>$confirmation_code);

        $applicants = $this->applicantRepository->create([
            'name' => $input['name'],
            'email' => $input['email'],
            'password' => bcrypt($input['password']),
            'address' => $input['address'],
            'cellphone_no' => $input['cellphone_no'],
            'confirmation_code' => $confirmation_code
        ]);

       Mail::send('applicant-dashboard.verify', compact('confirmation_code'), function($message) {
    $message->to(Input::get('email'), Input::get('name'))
            ->subject('Verify your email address');
});

        Flash::message('Thanks for signing up! Please check and verify your email.');

        return redirect(url('applicant'));
    }

    public function confirm($confirmation_code)
    {
        if( ! $confirmation_code)
        {
            throw new InvalidConfirmationCodeException;
        }

        $applicant = Applicant::whereConfirmationCode($confirmation_code)->first();

        if ( ! $user)
        {
            throw new InvalidConfirmationCodeException;
        }

        $applicant->confirmed = 1;
        $applicant->confirmation_code = null;
        $applicant->save();

        Flash::message('You have successfully verified your account.');

        return Redirect::url('applicant');
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-07 09:46:59

将您的验证链接更改为:

代码语言:javascript
运行
复制
http://127.0.0.1:8000/register/verify/KafEACL1U3DxoprDI0aIVpAyM3DY8Q

代码语言:javascript
运行
复制
http://127.0.0.1:8000/applicant/register/verify/KafEACL1U3DxoprDI0aIVpAyM3DY8Q

因为您的路由属于前缀为applicant的组

另外,将验证路由编辑为如下所示:

代码语言:javascript
运行
复制
Route::get('/register/verify/{confirmation_code}', 'LoginController@confirm')->name('applicant.verify');

不要忘记在控制器文件的顶部,在名称空间行之后使用此导入:

代码语言:javascript
运行
复制
use App\Exceptions\InvalidConfirmationCodeException;

这是因为laravel使用psr-4自动加载,这意味着InvalidConfirmationCodeException异常类在'app/Exceptions'文件夹下。

票数 2
EN

Stack Overflow用户

发布于 2017-08-08 05:07:05

您的路由文件中没有路由寄存器/verify/{confirmation_code},请这样添加:

代码语言:javascript
运行
复制
Route::get('register/verify/{confirmation_code}', ['as' => 'applicant.verify' => 'uses' => 'LoginController@confirm');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45538339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档