加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 我如何使用/(索引)路由两次登录和注销?

发布时间:2020-12-13 17:01:00 所属栏目:PHP教程 来源:网络整理
导读:我正在研究一个Laravel项目.该项目有一个公共的(未经过身份验证的网站部分)和一个经过身份验证的部分(管理员). 我正在尝试使用/ route显示公共主页视图,然后在进行身份验证时,我希望显示管理身份验证视图的相同/路由. 这是尝试的代码: routes.php文件 Route
我正在研究一个Laravel项目.该项目有一个公共的(未经过身份验证的网站部分)和一个经过身份验证的部分(管理员).

我正在尝试使用/ route显示公共主页视图,然后在进行身份验证时,我希望显示管理身份验证视图的相同/路由.

这是尝试的代码:

routes.php文件

Route::auth();

Route::get('/',function () {
        return view('Public.home');
    });

Route::group(['middleware' => ['auth']],function () { 

    Route::get('/',function () {
        return view('Authenticated.home');
    });
});

问题
当我注销并尝试访问/ route时,公共控制器(Public.home)被视为经过身份验证的路由(位于上面路由组中的“auth”中间件下).

中间件身份验证设置为重定向到/当访问任何受保护(经过身份验证的)路由时.

Authenticate.php

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class Authenticate
{
    /**
     * Handle an incoming request.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request,Closure $next,$guard = null)
    {
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.',401);
            }

            return redirect()->guest('/');
        }

        return $next($request);
    }
}

我正在使用Laravel 5.2.

解决方法

有几种方法可以解决这个问题.

第一种方法是从auth中间件中排除你的(‘/’)路由并编写自己的路由以检查它们是否已登录并根据它返回相应的视图.

像这样的东西可以做到这一点:

public function handle($request,Closure $next)
{
    if (Auth::check())
    {
        //The user is logged in
        return view('Authenticated.home');
    }

    else
    {
        //The user is not logged in
        return view('Public.home');
    }
}

有关编写自己的中间件的更多信息,请参阅相关文档.

或者,您可以创建一个视图(‘home’),然后使用if语句检查它们是否已登录.

像这样的东西可以做到这一点:

@if (Auth::check())
    //User is logged in
    //HTML that we want to show to authenticated user
@else
    //User is not logged in
    //HTML that we want to show to general public
@endif

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读