玩框架。如何检查用户是否经过身份验证?

时间:2014-05-01 14:36:15

标签: scala session authentication playframework-2.2

我是playframework的新手,我使用的是2.2.2。

我正在检查zentask样本,但有人可以告诉我如果用户登录后如何查看?

在main.scala.html我的链接列表中。

                <ul>
                    <li><a href="@routes.Application.newBlogpost">New blogpost</a></li>
                    <li><a href="@routes.Authentication.login">Login</a></li>
                    <li><a href="@routes.Authentication.logout">Logout</a></li>
                </ul>

我想要的是,当用户登录时,会显示注销链接。

我的application.scala看起来像这样:

  def index = Action {
    Ok(views.html.index(BlogPost.all(), blogpostForm))
  }

我可以检查是否允许用户访问以创建新的博客帖子:

def newBlogpost = IsAuthenticated { username => _ =>
    User.findByUsername(username).map { user =>
      Ok(views.html.blogpost.item(blogpostForm))
    }.getOrElse(Forbidden)
  }

那么main.scala.html中最简单的方法是检查用户是否登录并根据该链接显示正确的链接?

1 个答案:

答案 0 :(得分:1)

您可以将会话传递给您的html模板,并在那里检查是否已定义用户:

@()(implicit session: Session)

   <ul>
     @session.get("user").map { user =>
      <li><a href="@routes.Application.newBlogpost">New blogpost</a></li>
      <li><a href="@routes.Authentication.logout">Logout</a></li>
   }.getOrElse{
       <li><a href="@routes.Authentication.login">Login</a></li>
   }
   </ul>

注意:您必须在操作中将请求标记为隐式。