Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从已登录的用户处获取电子邮件_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何从已登录的用户处获取电子邮件

Java 如何从已登录的用户处获取电子邮件,java,spring,spring-boot,Java,Spring,Spring Boot,我有这个问题。正在尝试获取已登录我的应用程序的注册用户的电子邮件。这个想法是当我点击“配置文件”时,看到登录用户的电子邮件(实际上只看到登录用户在配置文件部分添加的内容)。所以我的问题是如何将html页面连接到数据库和当前登录的用户?我尝试了不同的方法,其中之一,但我得到空的电子邮件,我不知道为什么 我使用POSTGRESQL 这是我的实体 @Entity @Table(name = "username", uniqueConstraints = @UniqueConstr

我有这个问题。正在尝试获取已登录我的应用程序的注册用户的电子邮件。这个想法是当我点击“配置文件”时,看到登录用户的电子邮件(实际上只看到登录用户在配置文件部分添加的内容)。所以我的问题是如何将html页面连接到数据库和当前登录的用户?我尝试了不同的方法,其中之一,但我得到空的电子邮件,我不知道为什么

我使用POSTGRESQL

这是我的实体

@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();