gsp中的CUstomized链接

时间:2012-02-08 06:37:58

标签: grails groovy

我的grails应用程序中有一些控制器: -

LoginController
LogoutController
SearchableController
cirnele.SearchAllController
com.ten.cirnelle.domain.CustomerController
com.ten.cirnelle.domain.ProjectController
com.ten.cirnelle.domain.PurchaseOrderController
com.ten.cirnelle.domain.QuotationController
com.ten.cirnelle.domain.ResourceController

在Config.groovy中,我提供了一个我的移民: -

cirnelleControllerExclusions =['Login','Search','Searchable','Resource']

从main.gsp,我正在使用: -

<g:each var="c" in="${grailsApplication.controllerClasses.sort { it.fullName } }">

    <g:if test="${grailsApplication.config.cirnelleControllerExclusions.contains(c.naturalName.split()[0]) == false}">

        <li class="controller"><g:link controller="${c.logicalPropertyName}">${c.naturalName.split()[0]}</g:link></li>
    </g:if>
</g:each>

此代码用于在每个视图页面的顶部提供类似结构的菜单,并且它排除了我在Config.groovy中指定的4个cotroller,以在视图页面中显示为链接。 但我有许多用户具有不同的角色,如

ROLE_PM
ROLE_SALES/BDM
ROLE_TEAMMEMBER
ROLE_ADMIN

我的要求是,如果用户具有管理员角色登录,那么他可以将所有控制器视为一个链接(除了4),但如果用户有PM角色登录,那么他就无法查看CustomerController链接和QuotationCotroller链接。 那我该如何定制我的main.gsp来显示基于用户角色的菜单链接。 thnks

1 个答案:

答案 0 :(得分:1)

尝试使用spring security plugin。有标签可以完全按照你的意愿行事。

<sec:ifNotLoggedIn>
  <g:link controller="login" action="auth">Login</g:link>
</sec:ifNotLoggedIn>
<sec:ifAllGranted roles="ROLE_USER">
  <g:link class="create" controller="post" action="timeline">My Timeline</g:link>
</sec:ifAllGranted>