ser*_*nni 4 jsf authorization hyperlink spring-security
使用JSF + Spring Security.
解决方案1 - 面向UI:
JSF
如果经过身份验证的人员ROLE_ADMIN
仅具有权限,则页面将显示面板.
<p:panel rendered="#{facesContext.externalContext.isUserInRole('ROLE_ADMIN')}">
...
Run Code Online (Sandbox Code Playgroud)
解决方案2 - 面向后端(注释适当的DAO方法):
@Transactional
@PreAuthorize("hasRole('ROLE_ADMIN')")
public List<User> getUsers() {
return sessionFactory.getCurrentSession().createCriteria(User.class)
.list();
}
Run Code Online (Sandbox Code Playgroud)
简历:
看起来JSF rendered
属性不是灵活的解决方案,DAO注释方法不是用户友好的,因为重定向到403
.
什么是优雅的解决方案,允许我不显示与特定权限不对应的面板或链接?
您不希望显示最终用户面板或最终用户不允许查看/使用的任何类型的功能.这只会导致一般的混乱和沮丧.因此,rendered
属性中的角色检查是要走的路.
表达式只能以这种形式更简化:
<p:panel rendered="#{request.isUserInRole('ROLE_ADMIN')}">
Run Code Online (Sandbox Code Playgroud)
的ExternalContext#isUserInRole()
代表到HttpServletRequest#isUserInRole()
,但HttpServletRequest
其本身也存在于EL范围为#{request}
.
归档时间: |
|
查看次数: |
4218 次 |
最近记录: |