У меня есть таблица под названием «Пользователи», в которой уже есть логика токена jwt и все такое: в таблице есть имя пользователя, пароль, адрес электронной почты и статус (чтобы я мог видеть, активен пользователь или нет, вместо того, чтобы сразу удалять это из БД). Эта таблица работает для одного типа пользователей, но у меня их несколько, поэтому у меня есть еще одна таблица под названием admins, которая добавляет только компанию, в которой они работают, у меня есть ветеринарная таблица, которая добавляет больше данных, и клиентская таблица, которая добавляет разные данные. .
В основном 3 таблицы простираются от пользователей, но я не понимаю, как я могу сделать так, чтобы логин, скажем, клиента, заполнял данные пользователя и генерировал токен jwt, а также заполняет данные в клиентской таблице в базе данных.
это мой код для входа пользователя:
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.Auth;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.role;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.user;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.Jwt.jwtService;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.userRepository;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.Config.ApplicationConfig;
import org.springframework.security.crypto.password.PasswordEncoder;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.repositories.IAdminRepository;
import javax.management.relation.Role;
@Service
@RequiredArgsConstructor
public class authService {
private final userRepository userRepository;
private final jwtService jwtService;
private final PasswordEncoder passwordEncoder;
private final AuthenticationManager authenticationManager;
private final IAdminRepository adminRepository;
public authResponse login (loginRequest request) {
authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(request.getUsername(), request.getContraseña()));
UserDetails userDetails = userRepository.findByUsername(request.getUsername()).orElseThrow();
String token = jwtService.getToken(userDetails);
return authResponse.builder()
.token(token)
.build();
}
//Register admindios
public authResponse register (registerRequest request) {
user user1 = user.builder()
.email(request.getEmail())
.username(request.getUsername())
.contrasena(passwordEncoder.encode( request.getContraseña()))
.role(role.ADMINDIOS)
.build();
userRepository.save(user1);
return authResponse.builder()
.token(jwtService.getToken(user1))
.build();
}
}
это служба
Я пытался сделать то же самое, только входя в систему пользователя, но я не знаю, как заставить ее выполнять и процесс входа пользователя и генерации jwt, а также сохранение в базе данных другой информации
это модель пользователя
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.user;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "user")
public class user implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "email")
private String email;
@Column(name = "contraseña")
private String contrasena;
@Column(name = "username")
private String username;
@Column(name = "estatus")
private String estatus;
@Enumerated(EnumType.STRING)
role role;
это клиентская модель
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.models;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.user;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "cliente")
public class clientModel extends user {
@Column(name = "nombre_usuario")
private String nombreUsuario;
@Column(name = "numero_contacto")
private String numeroContacto;
@Column(name = "foto_perfil")
private String fotoPerfil;
@Column(name = "id_sucursal")
private int idSucursal;
это пользовательский репозиторий, клиентский — по сути то же самое
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.user;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface userRepository extends JpaRepository {
Optional findByUsername(String username);
}
это запрос на регистрацию пользователя
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.Auth;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class registerRequest {
String email;
String username;
String contraseña;
String estatus;
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... a-with-jwt
Проблемы с логикой создания пользователей с разными типами данных с помощью jwt в Springboot API. ⇐ JAVA
Программисты JAVA общаются здесь
1728515148
Anonymous
У меня есть таблица под названием «Пользователи», в которой уже есть логика токена jwt и все такое: в таблице есть имя пользователя, пароль, адрес электронной почты и статус (чтобы я мог видеть, активен пользователь или нет, вместо того, чтобы сразу удалять это из БД). Эта таблица работает для одного типа пользователей, но у меня их несколько, поэтому у меня есть еще одна таблица под названием admins, которая добавляет только компанию, в которой они работают, у меня есть ветеринарная таблица, которая добавляет больше данных, и клиентская таблица, которая добавляет разные данные. .
В основном 3 таблицы простираются от пользователей, но я не понимаю, как я могу сделать так, чтобы логин, скажем, клиента, заполнял данные пользователя и генерировал токен jwt, а также заполняет данные в клиентской таблице в базе данных.
это мой код для входа пользователя:
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.Auth;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.role;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.user;
import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.Jwt.jwtService;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.userRepository;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.Config.ApplicationConfig;
import org.springframework.security.crypto.password.PasswordEncoder;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.repositories.IAdminRepository;
import javax.management.relation.Role;
@Service
@RequiredArgsConstructor
public class authService {
private final userRepository userRepository;
private final jwtService jwtService;
private final PasswordEncoder passwordEncoder;
private final AuthenticationManager authenticationManager;
private final IAdminRepository adminRepository;
public authResponse login (loginRequest request) {
authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(request.getUsername(), request.getContraseña()));
UserDetails userDetails = userRepository.findByUsername(request.getUsername()).orElseThrow();
String token = jwtService.getToken(userDetails);
return authResponse.builder()
.token(token)
.build();
}
//Register admindios
public authResponse register (registerRequest request) {
user user1 = user.builder()
.email(request.getEmail())
.username(request.getUsername())
.contrasena(passwordEncoder.encode( request.getContraseña()))
.role(role.ADMINDIOS)
.build();
userRepository.save(user1);
return authResponse.builder()
.token(jwtService.getToken(user1))
.build();
}
}
это служба
Я пытался сделать то же самое, только входя в систему пользователя, но я не знаю, как заставить ее выполнять и процесс входа пользователя и генерации jwt, а также сохранение в базе данных другой информации
это модель пользователя
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.user;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "user")
public class user implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "email")
private String email;
@Column(name = "contraseña")
private String contrasena;
@Column(name = "username")
private String username;
@Column(name = "estatus")
private String estatus;
@Enumerated(EnumType.STRING)
role role;
это клиентская модель
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.models;
import com.ApiRestfulBackendVet.ApiRestfulBackendVet.user.user;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "cliente")
public class clientModel extends user {
@Column(name = "nombre_usuario")
private String nombreUsuario;
@Column(name = "numero_contacto")
private String numeroContacto;
@Column(name = "foto_perfil")
private String fotoPerfil;
@Column(name = "id_sucursal")
private int idSucursal;
это пользовательский репозиторий, клиентский — по сути то же самое
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.user;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface userRepository extends JpaRepository {
Optional findByUsername(String username);
}
это запрос на регистрацию пользователя
package com.ApiRestfulBackendVet.ApiRestfulBackendVet.Auth;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class registerRequest {
String email;
String username;
String contraseña;
String estatus;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79068960/problems-with-logic-of-how-to-create-users-with-different-type-of-data-with-jwt[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия