Spring Security OAuth2で現在ログインしているユーザーを抽出できません。私の目標は、ClientSuggestionエンティティの作成イベントがトリガーされたときにユーザーを抽出し、それをデータベースに保持することです。Spring Security OAuth2で認証されたユーザーの詳細を取得する方法
Employee.java
@Entity
@Table(name = "er_employee")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "username", unique = true)
@NotNull
@Size(max = 10)
private String username;
@Column(name = "password_hash")
@NotNull
@Size(min = 8, max = 512)
private String password;
@Column(name = "email_verification_token")
@Size(max = 512)
private String emailVerificationToken;
@Column(name = "password_reset_token")
@Size(max = 512)
private String passwordResetToken;
@Column(name = "active")
@NotNull
private boolean active;
@Column(name = "is_deleted")
@NotNull
private boolean deleted;
@Column(name = "date_of_creation")
@Temporal(TemporalType.TIMESTAMP)
@NotNull
private Date dateOfCreation;
@OneToMany(mappedBy = "employee")
private List<ClientSuggestion> clientSuggestions;
//Constructors
//Getters ans setters
}
ClientSuggestion.java
@Entity
@Table(name = "er_suggestion")
public class ClientSuggestion implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "content", unique = true)
@NotNull
@Size(max = 200)
private String suggestion;
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
//Constructors
//Getters ans setters
}
EmployeeRepository.java
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
ClientSuggestionRepository用の.java
public interface ClientSuggestionRepository extends CrudRepository<ClientSuggestion, Long> {
}
イベントハンドラ
@Component
@RepositoryEventHandler(ClientSuggestion.class)
public class ClientSuggestionEventHandler {
Employee employee= (Employee) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
@HandleBeforeCreate
public void handleClientSuggestionBeforeCreate(ClientSuggestion cs) {
cs.setDeleted(false);
cs.setActive(true);
cs.setPasswordResetToken(Encryptor.generateHash(cs.getPassword, 512));
cs.setEmployee(employee);
}
}
豆、ClientSuggestionEventHandlerは、コンフィギュレーション・クラスに登録されています。プロジェクトを実行しようとすると、NullPointerException例外がスローされます。現在ログに記録されている従業員を取得する方法を知りたい。 私はSpring Security OAuth2の新機能です。ありがとう。 Employee.java
で
あなたは 'プライベートリスト clientSuggestionsを初期化しました使用しています。あなたのコードでは、'? –
おそらく 'SecurityContextHolder.getContext()。getAuthentication()。getPrincipal()'を 'handleClientSuggestionBeforeCreate'の中に入れてみてください。 – varren
@varrenありがとう。出来た。 Merci beaucoup。 – byteHunt3r