【问题标题】:In Spring How to print user first name and last name from "<sec:authentication property="principal.username"/>"在 Spring 如何从“<sec:authentication property="principal.username"/>”打印用户名和姓
【发布时间】:2013-06-22 05:59:10
【问题描述】:

如何打印来自&lt;sec:authentication property="principal.username"/&gt;的用户名和姓

这个principal.username 只打印用户ID。但我想在这里从数据库中打印用户的名字和姓氏。可能吗?

【问题讨论】:

  • 你应该澄清你的问题:你从哪里得到&lt;sec:authentication property="principal.username"/&gt;?您使用的是哪个框架?操作系统?
  • 我这里使用的是 Spring Framework.. 这是 Spring Security 中的一个概念。

标签: java spring spring-security


【解决方案1】:

我猜你说的是 Spring Security。

这是我使用的解决方案:

创建一个将映射您的用户的类。它必须实现接口org.springframework.security.core.userdetails.UserDetails

public class MyUserDetails implements UserDetails {
    private String username;
    private String password;

    private String firstname;
    private String lastname;

    public String getFirstname() {
        return firstname;
    }

    public String getLastname() {
        return lastname;
    }

    // Etc.
}

创建一个 org.springframework.security.core.userdetails.UserDetailsS​​ervice 的实现,它将从数据库中加载您的用户:

@Component
public class MyUserDetailsService implements UserDetailsService {
    @Autowired
    private MyUserDAO userDAO;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        final MyUserDetails user = userDAO.getUserByUsername(username);
        if(user == null) {
            throw new UsernameNotFoundException("No user found for username '" + username +"'.");
        }
        return user;
    }
}

现在您必须告诉 Spring Security 使用您的服务从您的用户那里加载详细信息:

<authentication-manager>
    <user-service id="myUserDetailsService"/>
</authentication-manager>

现在您应该可以使用&lt;sec:authentication property="principal.firstname"/&gt;&lt;sec:authentication property="principal.lastname"/&gt; 来显示当前用户的名字和姓氏。

【讨论】:

  • thanx.. 你能告诉我关于私人 MyUserDAO userDao;
  • 这是一个遵循Data Access Object设计模式的类。如何创建取决于您用来与数据库交互的 API(JDBC、Hibernate、MyBatis 等)。
  • @user2358480 还是卡住了?您使用什么从数据库中检索数据?
  • 可以使用注解配置添加sn-p吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
相关资源
最近更新 更多