我有一个标准的用户/角色设置,它在列表中返回当前用户的角色。然后我使用 permissions="" 属性和 preFuseaction 阶段来检查这个用户是否被授权访问这个 fuseaction。这允许显示页面的某些块,并为不同的用户隐藏某些块。
我不能在更细粒度的级别上做同样的事情,即禁止在侧边栏中向没有权限的用户显示链接。说:
<ul>
<li><a href="#xfa.mainmenu#>Main Menu</a></li>
<li><a href="#xfa.adminmenu#>Admin Menu</a></li>
</ul>
管理员菜单应该只对具有“管理员”角色的用户可用。如果普通用户点击这个链接,他们什么也得不到,因为当 fuseaction 实际运行时,它会把他们踢出去。我宁愿一开始就没有链接。
这可以通过将角色硬编码到 .cfm 文件中来完成,因此:
<ul>
<li><a href="#xfa.mainmenu#>Main Menu</a></li>
<cfif checkRole('admin') EQ TRUE><li><a href="#xfa.adminmenu#>Admin Menu</a></li></cfif>
</ul>
但是,如果可以查找在 circuit.xml 中定义的权限并将其传递给 checkRole() (可能通过传递 xfa?)而不是静态值,则会更优雅一些。这可能与 Fusebox 创建的结构有关吗?