我只是想了解"验证"在Spring MVC中。我设置了一个小的验证表,工作得很好。但是我得到了一些问题,所有这些教程都没有回答
据我所知,Validator只是改变了每个表单元素并检查它是否有效。如果我希望用户只能更改特定的表单元素,该怎么办?
假设我的网页上有管理员和常规用户,他们都可以编辑自己的个人资料。然而,管理员可以更改他的用户名,但不允许常规用户这样做。他们都使用" edit-profile.jsp"因此同样的验证者。我可以在普通用户的视图中将用户名字段变灰,但我们假设他不是一个完整的BDU,并通过他的webbrowser的调试器添加一个表单字段,覆盖实际的用户名输入字段。然后他改变用户名并将请求发送给MVC。验证器假定更改的用户名来自原始输入字段并相应地更新用户在数据库中的昵称,因为管理员和普通用户都使用相同的验证器和相同的" updateAllAltered&# 34; -DAO方法。选择选项列表也是如此。我们假设管理员可以将个人资料的状态设置为有效和无效。但是,用户只能将其自己的个人资料设置为无效,但无法自行重新激活。我可以像上面一样做,只是改变前端的选项面板,只显示" INACTIVE"在常规用户的下拉框中。但是我们可以重复相同的场景,用户只需添加一个调试表单字段,其中也包含选项" ACTIVE"。如果例如,这可能会失控。允许管理员将角色更改为" admin,member,moderator",而用户(即论坛中的主持人)可以将角色更改为"成员或主持人" 。他可以再次添加另一个字段和插件" admin"并完全控制论坛。
如何处理Spring?
答案 0 :(得分:0)
基本上你必须为你的用例处理spring security,设计你的应用程序安全性,你会很容易找到基本的spring安全例子。
示例您可以通过用户角色的spring安全标记来阻止JSP中的HTML代码。
<sec:authorize access="hasAnyRole('ROLE_ADMIN')">
<a href="delete/${file.id}">Delete</a>
</sec:authorize>
您可以按角色注释任何方法以阻止访问。
@Secured({ "ROLE_ADMIN" })