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

Scala 播放框架。如何检查用户是否经过身份验证?,scala,session,authentication,playframework-2.2,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>

我是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>
我可以检查是否允许用户访问以创建新的博客帖子:

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

那么,在main.scala.html中,检查用户是否登录并在此基础上显示正确链接的最简单方法是什么?

您可以将会话传递给您的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>
@()(隐式会话:会话)
    @session.get(“user”).map{user=>
  • }格托莱斯先生{
  • }

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

不适用于我,我正在使用play2auth库,希望为我的站点实现相同的功能@joonasj你能帮我吗(
@()(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>