Java 如何从已登录的用户处获取电子邮件
我有这个问题。正在尝试获取已登录我的应用程序的注册用户的电子邮件。这个想法是当我点击“配置文件”时,看到登录用户的电子邮件(实际上只看到登录用户在配置文件部分添加的内容)。所以我的问题是如何将html页面连接到数据库和当前登录的用户?我尝试了不同的方法,其中之一,但我得到空的电子邮件,我不知道为什么 我使用POSTGRESQL 这是我的实体Java 如何从已登录的用户处获取电子邮件,java,spring,spring-boot,Java,Spring,Spring Boot,我有这个问题。正在尝试获取已登录我的应用程序的注册用户的电子邮件。这个想法是当我点击“配置文件”时,看到登录用户的电子邮件(实际上只看到登录用户在配置文件部分添加的内容)。所以我的问题是如何将html页面连接到数据库和当前登录的用户?我尝试了不同的方法,其中之一,但我得到空的电子邮件,我不知道为什么 我使用POSTGRESQL 这是我的实体 @Entity @Table(name = "username", uniqueConstraints = @UniqueConstr
@Entity
@Table(name = "username", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class Username {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
private String email;
private String password;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "usernames_roles",
joinColumns = @JoinColumn(
name = "usernames_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"))
private Collection<Role> roles;
public Username() {
}
首先,在
Username
实体中需要setter和getter
然后,通过以下方式获得当前用户的登录:
String login = "";
if (SecurityContextHolder.getContext().getAuthentication() != null)
login = SecurityContextHolder.getContext().getAuthentication().getName();
然后通过登录获得用户,这取决于您在查询数据库方面实现了什么(例如,存储库、服务等)
当您拥有当前用户时,只需调用其
getEmail()
当我使用您提供的代码时,我直接收到了电子邮件,这很奇怪。谢谢你的回答!
String login = "";
if (SecurityContextHolder.getContext().getAuthentication() != null)
login = SecurityContextHolder.getContext().getAuthentication().getName();