Laravel:让客人看不到链接

时间:2013-03-22 05:56:56

标签: php laravel

我正在使用L3创建一个网站,以便客人可以在不需要登录的情况下发表评论,然后会有管理员登录。我有一个用于导航和管理员导航的菜单栏,但在管理员登录时,菜单栏应该有更多选项。在我的布局上,这就是我所拥有的;

<div class="nav-collapse collapse" id="main-menu">
            <ul class="nav" id="main-menu-left">

                <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Contact Us<b class="caret"></b></a>
                    <ul class="dropdown-menu" id="swatch-menu">
                        <li>{{HTML::link('posts/contact','Leave a coment')}}</li>
                        <li>{{HTML::link('posts/location','Grt Our Locations')}}</li>
                        @if (Session::has('permission'))
                        <li>{{HTML::link('posts/review','Review Posts')}}</li>                            
                        <li>{{HTML::link('posts/list','List all Posts')}}</li>
                        @endif
                    </ul>
</div>

在我的管理员控制器上,我创建了一个会话,以便只有管理员可以访问帖子/评论和帖子/列表。这就是我所拥有的

public function post_login()
{
    $email = Input::get('email');
    $password = Input::get('password');


    $credentials = array
        ('username' => $email,
        'password' => $password);

    if (Auth::attempt($credentials))
    {
        Session::put('permission', 'admin');
        return Redirect::to('admin/index');
    } else
    {
        Session::flash('status_error', 'Your email or password is invalid - please try again.');
        return Redirect::to('admin/login');
    }
}

这项工作正常,但是当客户将鼠标悬停在菜单栏上时可以看到管理员链接(即他们可以看到“评论帖子”和“列出所有帖子”。但他们无法访问这些页面(他们被重定向到管理员登录页面。。我的问题是,如何让这些链接对访客不可见,但管理员在登录时可见?访客和管理员都必须使用相同的布局。提前谢谢。

2 个答案:

答案 0 :(得分:3)

您应该使用以下方法而不是会话:

@if (Auth::user())
    <a href="#">Admin</a>
@endif

答案 1 :(得分:0)

您好像已经登录过一次,然后再次注销以测试该网站。看起来您没有在退出时清除“许可”会话。