Laravel 5.1的身份验证视图

时间:2015-06-11 02:58:31

标签: authentication laravel laravel-5

Laravel 5.1刚刚发布,我想知道如何告诉AuthController获取登录&从自定义目录注册视图?默认值为:resources/views/auth ...

特征 AuthenticateAndRegisterUsers 只有这个:

trait AuthenticatesAndRegistersUsers
{
    use AuthenticatesUsers, RegistersUsers {
        AuthenticatesUsers::redirectPath insteadof RegistersUsers;
    }
}

2 个答案:

答案 0 :(得分:2)

您在那里展示的代码只会填充一个函数:它告诉我们的特征是使用redirectPath特征中的AuthenticatesUsers而不是来自RegistersUsers的特征。

如果您在AuthenticatesUsers特征内部进行检查,则会找到getLogin()方法。默认情况下,此定义为

public function getLogin()
{
    return view('auth.login');
}

然后,只需覆盖控制器中的函数并返回另一个视图即可获得另一个视图。如果您出于某种原因希望从标准resources/Views以外的目录加载您的观看次数,则可以通过调用View::addLocation($path)来执行此操作(您将在Illuminate\View\FileViewFinder中找到此定义} Illuminate\View\ViewFinderInterface

的实施

此外,请注意,更改auth views目录将无法更改域或类似内容。这取决于函数名称(根据Route::Controller($uri, $controller, $names=[])的定义。有关路由如何工作的更多详细信息,我建议只查看Illuminate\Routing\Router

答案 1 :(得分:0)

对于那些使用laravel 5.2的人,你只需要覆盖loginView的属性值

https://github.com/laravel/framework/blob/5.2/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php

    ImageView btnOpen = (ImageView) findViewById(R.id.image_view_open);
    btnOpen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popupMenu = new PopupMenu(ActivityViewImage.this, v);
            getMenuInflater().inflate(R.menu.context_menu_image, popupMenu.getMenu());
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    //do something
                    return true;
                }
            });
            popupMenu.show();
        }
    });

所以要覆盖登录视图路径,你只需要这样做

public function showLoginForm()
{
    $view = property_exists($this, 'loginView')
                ? $this->loginView : 'auth.authenticate';
    if (view()->exists($view)) {
        return view($view);
    }
    return view('auth.login');
}