如何从已登录的用户那里获取电子邮件

时间:2021-05-07 08:54:33

标签: java spring spring-boot

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

我使用 POSTGRESQL

这是我的实体

>>> pyarrow.StructArray.from_buffers(struct_type, len(col1), [validity_bitmask], children=[col1, col2])
<pyarrow.lib.StructArray object at 0x7f8b560fa2e0>
-- is_valid:
  [
    false,
    true
  ]
-- child 0 type: int64
  [
    null,
    1
  ]
-- child 1 type: string
  [
    null,
    "foo"
  ]

这是安全配置

@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() {
    
}

1 个答案:

答案 0 :(得分:0)

首先,您需要在 Username 实体中使用 setter 和 getter。

然后,您通过以下方式获取当前用户的登录信息:

String login = "";
if (SecurityContextHolder.getContext().getAuthentication() != null)
login = SecurityContextHolder.getContext().getAuthentication().getName();

然后您通过登录获取用户,具体取决于您在查询数据库(例如存储库、服务等)方面实施的内容。

当您拥有当前用户时,只需调用其 getEmail()