Lift中的几个登录级别

时间:2013-06-01 17:25:44

标签: scala lift

假设我有两个用户模型:

object Customer extends Customer with KeyedMetaMapper[Long, Customer] with MetaMegaProtoUser[Customer]
object User extends User with MetaMegaProtoUser[User]

来自MegaProtoUser。一个用于前端,一个用于管理员登录,它们完全不同。现在我想我必须将两者都添加到站点地图中:

class Boot {
    def boot {
        val sitemap = List(
            Menu.i("Home") / "index",
            Menu.i("Admin") / "admin" / "index" submenus User.menus
        ) ::: Customer.menus
        LiftRules.setSiteMap(SiteMap(sitemap:_*))
    }
}

对我来说似乎很简单,但它引发了一个例外:

net.liftweb.sitemap.SiteMapException: Location Login defined twice
    Loc(Login, <function1>, LinkText(<function1>), List(If(<function0>,<function0>), Template(<function0>))) 
and
    Loc(Login, <function1>, LinkText(<function1>), List(LocGroup(WrappedArray(public)),If(<function0>,<function0>), Template(<function0>)))

如何为管理员用户添加第二个登录和用户编辑区域?

1 个答案:

答案 0 :(得分:2)

(从查看proto / ProtoUser.scala)覆盖此:

/ **    *如果您的应用程序中有多个ProtoUser,则需要区分菜单名称。    *通过更改菜单名称后缀来执行此操作,以便没有名称冲突    * /   protected def menuNameSuffix:String =&#34;&#34;

因此,如果您将其设置为&#34; xx&#34;然后菜单名称将是Loginxx而不是登录。