当前位置: 首页 > 知识库问答 >
问题:

在JHipster中获取当前登录用户

暨曾笑
2023-03-14

我正在构建一个jhipster应用程序。我正在尝试获取一个基于当前登录用户的对象列表。在线上有几个简单的例子,比如jhipster博客演示,描述了如何通过当前登录用户获取当前用户的博客--我想模仿一下。在演示中有一种回购方法:

@Query("select blog from Blog blog where blog.user.login = ?#{principal.username}")
List<Blog> findByUserIsCurrentUser();

我尝试用以下方法来模拟:

@Query("select userWorkoutTemplate from WorkoutTemplate workoutTemplate where workoutTemplate.userDemographic.user.login = ?#{principal.username}")
List<WorkoutTemplateDTO> findByUserIsCurrentUser();
@Entity
@Table(name = "jhi_user")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class User extends AbstractAuditingEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

@NotNull
@Pattern(regexp = Constants.LOGIN_REGEX)
@Size(min = 1, max = 50)
@Column(length = 50, unique = true, nullable = false)
private String login;

@JsonIgnore
@NotNull
@Size(min = 60, max = 60)
@Column(name = "password_hash",length = 60)
private String password;

@Size(max = 50)
@Column(name = "first_name", length = 50)
private String firstName;

@Size(max = 50)
@Column(name = "last_name", length = 50)
private String lastName;

@Email
@Size(max = 100)
@Column(length = 100, unique = true)
private String email;

@NotNull
@Column(nullable = false)
private boolean activated = false;

@Size(min = 2, max = 5)
@Column(name = "lang_key", length = 5)
private String langKey;

@Size(max = 256)
@Column(name = "image_url", length = 256)
private String imageUrl;

@Size(max = 20)
@Column(name = "activation_key", length = 20)
@JsonIgnore
private String activationKey;

@Size(max = 20)
@Column(name = "reset_key", length = 20)
private String resetKey;

@Column(name = "reset_date")
private ZonedDateTime resetDate = null;

@JsonIgnore
@ManyToMany
@JoinTable(
    name = "jhi_user_authority",
    joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
    inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@BatchSize(size = 20)
private Set<Authority> authorities = new HashSet<>();
....
@Entity
@Table(name = "user_demographic")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class UserDemographic implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

@NotNull
@Column(name = "created_on", nullable = false)
private LocalDate createdOn;

@NotNull
@Column(name = "last_login", nullable = false)
private LocalDate lastLogin;

@Enumerated(EnumType.STRING)
@Column(name = "gender")
private Gender gender;

@NotNull
@Column(name = "date_of_birth", nullable = false)
private LocalDate dateOfBirth;

@Column(name = "height")
private Float height;

@NotNull
@Enumerated(EnumType.STRING)
@Column(name = "unit_of_measure", nullable = false)
private UnitOfMeasure unitOfMeasure;

@OneToOne(optional = false)
@NotNull
@JoinColumn(unique = true)
private User user;

@ManyToMany
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JoinTable(name = "user_demographic_gym",
           joinColumns = @JoinColumn(name="user_demographics_id", referencedColumnName="id"),
           inverseJoinColumns = @JoinColumn(name="gyms_id", referencedColumnName="id"))
private Set<Gym> gyms = new HashSet<>();

@OneToMany(mappedBy = "userDemographic")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<UserWeight> userWeights = new HashSet<>();

@OneToMany(mappedBy = "userDemographic")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<WorkoutTemplate> workoutTemplates = new HashSet<>();

@OneToMany(mappedBy = "userDemographic")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<UserWorkoutTemplate> userWorkoutTemplates = new HashSet<>();

@ManyToOne(optional = false)
@NotNull
private SkillLevel skillLevel;
@Entity
@Table(name = "user_workout_template")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class UserWorkoutTemplate implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

@NotNull
@Column(name = "created_on", nullable = false)
private LocalDate createdOn;

@NotNull
@Column(name = "last_updated", nullable = false)
private LocalDate lastUpdated;

@Column(name = "notes")
private String notes;

@ManyToOne(optional = false)
@NotNull
private UserDemographic userDemographic;

@ManyToOne
private WorkoutTemplate workoutTemplate;

@OneToMany(mappedBy = "userWorkoutTemplate", fetch = FetchType.EAGER)
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<UserWorkoutInstance> userWorkoutInstances = new HashSet<>();

共有1个答案

咸臻
2023-03-14

您可以从SecurityUtils获得当前登录的用户id。securityutils.getCurrentUserLogin()将提供当前登录用户的登录名。使用此登录从DB获取用户实体。(FindoNebyLogin)

 类似资料:
  • 问题内容: 我正在构建一个jhipster应用程序。我试图根据当前登录的用户获取对象列表。在线上有一些简单的示例,例如jhipster博客演示,描述了如何通过当前登录用户获取当前用户的博客,而我想对此进行模仿。在演示中,有一个repo方法: 我试图用以下方法来模仿: 但是我的IDE抛出此错误: 嵌套异常为java.lang.IllegalArgumentException:方法公共抽象java.u

  • sp_get_current_userid() 功能: 获取当前登录用户ID 参数: 无 返回: int,当前登录的用户id,如果未登录返回0

  • sp_get_current_user() 功能: 获取当前登录用户信息,包括users表里详细信息; 参数: 无 返回: 数组,用户包括users表里详细信息

  • 接口说明 获取当前登录用户的ID 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /usercenter/api/userinfo/v1.0.0/getLoginUserId 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 参数

  • 接口说明 获取当前登录用户的ID 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /usercenter/api/userinfo/v1.0

  • 我们创建了一个java web应用程序,一旦用户访问我的网站,它必须将登录id作为他的windows凭据登录id,但在我的情况下,托管我的网站后,它每次都返回服务器管理用户作为windows登录id。在java web应用程序中有没有方法获取当前的windows用户id。 如果我打开我的网站,它必须显示我的名字,如果有些人打开了那个网站,它必须显示他的名字。 谢谢