这可能是一个新手问题。弹簧:存储和使用Sitemesh装饰器中的对象
我有一个表用户,其中包含有关登录,通过和权限的信息。根据权限或角色,可以在以下任一项中找到有关每个用户的详细信息:教师,学生,家长。当用户登录时,存储在USER表中的信息可以很容易地从安全上下文中获取。
我想在登录后在标题中始终显示名字和姓氏 - 这些可以从其他表中获取。
我的问题是:我如何处理会话中的这些对象的所有时间?或者可以存储用户(它在春季存储),然后在每次需要详细信息时获取特定表格?
我使用spring security 3,hibernate,jsp,sitemash。
更多的澄清:
我知道如何处理登录的用户,并限制某些内容。登录详细信息(id,pass,role)存储在USER表中,这没关系 - 我可以取它并显示我想要的任何信息。问题在于有关特定用户的详细信息(地址,姓名,电子邮件等)存储在另一个表(学生,教师,家长 - 取决于USER表中的角色)中。这就是我想要在每一页上都知道的 - 例如显示他/她的名字。
您是否已经自行加载用户数据?如果是这样,为什么不一次性加载所有你需要的信息(根据权限做一个单独的查询),然后把它作为一个自定义用户对象加以整理,作为安全上下文主体对象存储? –
是的,我正在从用户自己加载数据。你的意思是我应该扩展用户类,添加几个字段,并像现在一样使用它? 目前,我有这样的: 用户=新用户(用户名,dbUser.getHaslo(),真的,真的,真的, \t \t \t \t \t真实的,补助金); 所以basiclly只有这个构造函数会变成我要实现的那个,它会工作吗?无论如何,我会检查它tmrw并标记答案:) –
好的,我做了,但使用身份验证auth = SecurityContextHolder.getContext()。getAuthentication()...我只能获取登录的用户名和权限。我扩展了org.springframework.security.core.userdetails.User并添加了两个字段 - 名称和姓氏。但仍然不知道如何将其传递给模型。像上面这样做只允许我使用getName()(例如登录)。仍然无法访问添加的字段 –