是否可以通过动态创建的 HTML 将 Spring 安全性集成到我的 DOM 中?例如,仅向具有 ROLE_ADMIN 的用户显示以下按钮:
var adminButton =
'<div sec:authorize="hasRole('ROLE_ADMIN')" style="display:hide">' +
'<a href="#">ADMINS ONLY </a>' +
'</div>'
$('#showButton').on('click', function(){
adminButton.show();
}
这不是一个永久的解决方案,但最好知道是否可以通过 AJAX 请求来处理安全内容。
最佳答案
您的意思是仅当用户是管理员时才显示单击按钮?当#showButton
单击后,您可以通过 AJAX 询问服务器当前 session 是否具有此权限。但是为什么只有当用户是管理员时才不渲染按钮呢?
由于生成按钮的代码仍然存在,因此有人可以检查 JavaScript 并轻松绕过您的检查。一般来说,在客户端处理安全方面是一种不好的做法,您通常所做的只是第一次验证,以便在不需要刷新页面的情况下发出错误信号,但每个操作的每个参数都应该在服务器端进行验证。
在这种情况下,您需要仔细检查。第一次在生成(或不生成)按钮时,第二次在处理按钮触发的操作的代码中。
关于javascript - 使用 Javascript 动态实现 Spring Security,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31389917/