【发布时间】:2018-06-04 07:23:34
【问题描述】:
我想从会话中访问一些用户详细信息。我通过覆盖 loadUserByUsername(String username) 方法来使用 Spring Security 和自定义身份验证。
我正在返回一个用户并希望从 我的控制器中访问它。我尝试了主体对象,但我无法访问我的 ESecurityUser 的 companyId 字段目的。
任何帮助将不胜感激..
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
ESecurityUser user = new ESecurityUser();
user.setUsername("hello");
user.setPassword("world");
user.setCompanyId(199);
Set<EAuthority> authorities = new HashSet<EAuthority>();
EAuthority authority = new EAuthority();
authority.setAuthority("ROLE_ADMIN");
authorities.add(authority);
user.setAuthorities(authorities);;
return user;
}
示例控制器代码
@RequestMapping("")
public String toPeriodicAdReport(@ModelAttribute("advertFormHelper") AdvertFormHelper advertFormHelper,
Model model,Principal principal) {
//What to write here so that i can access to authenticated user`s companyId field..
return "Test";
}
【问题讨论】:
-
ESecurityUser 用户 = (ESecurityUser) 主体;
-
@brub 你好,我试过了,但我遇到了一个异常。
org.springframework.security.authentication.UsernamePasswordAuthenticationToken cannot be cast to tr.com.simroll.ada.rvm.report.entity.ESecurityUser -
这个问题应该被编辑,但有例外。这真的有助于了解幕后发生的事情......
标签: spring spring-mvc spring-security