【发布时间】:2016-11-07 22:50:41
【问题描述】:
我正在建立一个商店,这样我就可以学习 laravel。 与大多数商店一样,用户可以将商品添加到购物车,但在注册之前无法结账。 我如何让相同的路由在授权时返回用户名,在授权时返回任何内容。 起初这对我来说似乎很容易:
@if(Auth::guest())
Nothing || or login/register buttons
@else
{{ Auth::user()->name }}
@endif
当您的内容应该只对忠实用户可见但对于商店而言,您需要用户看到那里提供的内容时,这很有效。
问题是,在我的家庭控制器中,我需要在构造函数中添加中间件身份验证,以便Route::get('/',HomeController@index); 返回一个视图并在视图中使用@if(Auth::guest()) ...,但添加此中间件意味着此路由不可访问如果用户未经过身份验证且没有它you get this issue。
那么,如何在不阻止来自未经身份验证用户的路由的情况下,使用经过身份验证的用户 data(if authenticated) 获得相同的根路由?
【问题讨论】:
-
不要将
auth中间件放在任何公共路由上,请使用您的问题中提到的@if @else块。我不确定你的问题是什么,你链接的问题是关于不同的中间件,web -
我不完全明白你的意思?验证::检查()?将检查用户是否经过身份验证?
-
@Birdy & @Steve ,是的,但如果路由没有 auth 中间件,则不会工作。如果您在 ebay,请转到 ebay,网址是 ebay.com,登录网址是 signin.ebay.com/... ,登录后网址是 ebay.com 而不是 ebay.com/home 或 ebay.com /经过身份验证的用户。
php artisan make:auth附带的默认 laravel 身份验证适用于您拥有公共数据和仅身份验证数据的情况。在这种情况下,所有数据都是公开的,但用户可能拥有一个帐户以获得更多访问权限,例如结帐 -
没有 auth 中间件,刀片没有来自 Auth 门面的数据,而使用中间件,这些路由访问受限
-
您要实现的目标将非常简单,但是我不太明白您的意思,这听起来像是您将简单的解决方案复杂化了,这就是导致我不太明白你的意思,所以也许其他人可以帮助你@Steve 比我更先进:) - 对我来说,听起来你已经通过使用 if else 语句知道答案,因为 Auth 在所有视图中都可用,而没有。
标签: php laravel laravel-routing laravel-5.3