我不确定如何解决以下问题/实现我的方案。也许有人可以给我一些提示?
我有一个Spring Security MVC应用程序。我还使用自定义登录页面。到目前为止一切正常,我可以使用以下代码验证并在我的JSP上显示登录用户。
<sec:authorize ifAnyGranted="ROLE_USER">
Logged in as <sec:authentication property="principal.username" />
</sec:authorize>
用户现在正从数据库中恢复过来。 XML中的代码是
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT username, password , '1' AS enabled FROM users WHERE username = ?"
authorities-by-username-query="SELECT username, 'ROLE_USER' FROM users WHERE username = ?" />
一切正常。问题是,我实际上有一个我想使用的自定义User类,可能会保留在我的会话中,因为以后的DB请求应该根据登录的User.id过滤结果。
我该怎么做?
非常感谢任何帮助或提示。只需要一些方向: - )
答案 0 :(得分:2)
如果您使用的是Spring Security 3.x,则可能需要检查Expression Based Access Control(例如@PostFilter
)是否符合您的要求。
例如,如果您的Task
个对象有username
成员,您可以这样做......
@PostFilter("filterObject.username == authentication.name")
public List<Task> getTasks() {
...
tasks = TaskDao.findAll();
return tasks;
}
这将返回属于登录用户的那些任务。
This所以讨论也可能是相关的。