Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring Security

Spring Security Dersleri Veritabanı Yetkilendirme User Detail Kullanımı 

Paylaş

Spring Security Dersleri’ne devam ediyoruz.

Bu yazıda Veritabanımızdaki kullanıcılar ve bu kullanıcıların yetkilerini Spring Security’e UserDetail ve UserDetailService kullanarak Spring Security’e devrederek nasıl kullanırız buna bakacağız.

User ve Role entitylerini oluştralım ve User ve Role arasında bir ilişki olmasını sağlayacağız. Bu ilişkiyi kullanarak Spring Security’nin UserDetail interface’sini doldurağız ve tüm yetkinin Spring Security’e vermiş olacağız.

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="user_table")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private long id;
    private String name;
    private String password;

    @ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    @JoinTable(name = "user_role",
            joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "user_id")},
            inverseJoinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")}
    )
    private List<Role> roles;

}Code language: CSS (css)

User entitymizi oluşturduk ve Role entity’i ile bir ilişki kuruyoruz.

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="role_table")
public class Role {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="role_id")
    private Long id;
    private String role_name;

}Code language: PHP (php)

Entitylerimizi oluşturduk. Şimdi ise Spring Security configimizi düzenleyeceğiz. Bu config ile birlikte Spring Security UserDetailService’ı kullanarak veritabanından kullanıcı ve rol bilgilerini çekmemiz gerektiğini söylüyoruz.

@Service
public class CustomUserDetailsService implements UserDetailsService {

    @Autowired
    UserRepository userRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        User user = userRepository.findByName(username);
        return new CustomUserDetail(user);
    }
}Code language: PHP (php)

Veritabanından kullanıcı bilgilerini aldıktan sonra Spring Security’e vermek için UserDetail interfacesini doldurmamız gerekmekte.

public class CustomUserDetail implements UserDetails {

    private String name;
    private String password;
    private List<GrantedAuthority> roles;


    public CustomUserDetail(User user){
        this.name=user.getName();
        this.password=user.getPassword();
        this.roles=user.getRoles().stream().map((role -> new SimpleGrantedAuthority(role.getRole_name()))).collect(Collectors.toList());
    }


    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return roles;
    }

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public String getUsername() {
        return name;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}Code language: PHP (php)

Spring Security’nin yaşam döngüsü boyunca uygulamamızı güvende tutmak için gereken bilgileri veritabanından alarak gerekli alanlara eşitleyerek vermiş oluyoruz.

Tags:

spring security derslerispring security örnek

Paylaş

Diğer Yazılar

blank
Previous

Java Record Nedir ve Kullanımı

Spring Cloud Stream Dersleri
Next

Spring Cloud Stream Nedir? Ders #1

Next
Spring Cloud Stream Dersleri
22 Mayıs 2022

Spring Cloud Stream Nedir? Ders #1

Previews
24 Nisan 2022

Java Record Nedir ve Kullanımı

blank

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Security Dersleri

Spring Security In-Memory Authentication ve Authorization

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Röportaj
Spring Data
Redis
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Tanıyalım
Veritabanı
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale