gpt4 book ai didi

jsf - Spring Security+JSF ROLE-driven渲染页面组件(链接等)最佳实践

转载 作者:行者123 更新时间:2023-12-04 22:49:46 25 4
gpt4 key购买 nike

签名 JSF+Spring 安全。

解决方案 1 - 面向 UI:JSF如果经过身份验证的人有 ROLE_ADMIN,页面将显示带有用户的面板只有权威。

<p:panel rendered="#{facesContext.externalContext.isUserInRole('ROLE_ADMIN')}">
...

解决方案 2 - 面向后端 (注释适当的DAO方法):
@Transactional
@PreAuthorize("hasRole('ROLE_ADMIN')")
public List<User> getUsers() {
return sessionFactory.getCurrentSession().createCriteria(User.class)
.list();
}

简历:
看起来像 JSF rendered属性不是灵活的解决方案,DAO 注释的方法对用户不友好,因为重定向到 403 .

什么是优雅的解决方案,允许我不显示与特定权限不对应的面板或链接?

最佳答案

您不想显示最终用户面板或不允许最终用户查看/使用的任何类型的功能。这只会导致普遍的困惑和沮丧。因此,在 rendered 中进行角色检查属性是要走的路。

表达式只能以这种形式更简化:

<p:panel rendered="#{request.isUserInRole('ROLE_ADMIN')}">

ExternalContext#isUserInRole() 代表 HttpServletRequest#isUserInRole() ,但 HttpServletRequest本身也在 EL 范围内以 #{request} 的形式出现.

关于jsf - Spring Security+JSF ROLE-driven渲染页面组件(链接等)最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com