3

这可能是一个新手问题。

我有一个表 USER,其中包含有关登录、通行证和权限的信息。根据权限或角色,可以在以下之一中找到有关每个用户的详细信息:教师、学生、家长。当用户登录时,存储在 USER 表中的信息可以很容易地从安全上下文中获取。

我想在登录后一直在标题中显示名字和姓氏 - 这些可以从其他表中获取。

我的问题是:如何始终在会话中存储这些对象之一?或者只存储用户(它由spring存储)然后每次我需要详细信息时获取特定表是否可以?

我使用spring security 3、hibernate、jsp、sitemash。

如需更多说明:

我知道如何处理登录用户并限制某些内容。登录详细信息(id、pass、角色)存储在 USER 表中,这没关系 - 我可以获取它并显示在我想要的任何地方。问题是有关特定用户的详细信息(地址、姓名、电子邮件等)存储在另一个表中(学生、教师、家长 - 取决于 USER 表中的角色)。这是我想在每一页上都知道的——例如显示他/她的名字。

4

1 回答 1

1

简而言之 - 1.您需要扩展 spring User 以提供额外的字段。2.你需要实现UserDetailsS​​ervice接口并在安全上下文中引用它。3. 现在您可以像这样在控制器中获取您的对象: authentication.getPrincipal() - 记住要转换为您的类型。

另外 - 我个人总是有 AbstracController,它是我项目中每个控制器的基础。在那里,除其他外,我有返回当前委托人的方法。

于 2012-05-31T12:51:31.377 回答