9 Haziran 2020 Salı

JHipster-4 (Oluşturulan Angular JS sayfasını public erişime açma)

Merhaba,
bu yazımda oluşturulan  monolitik  JHipster projesinin ekranlarının public erişime nasıl açılacağını paylaşacağım.

ilk olarak bir önceki yazımda paylaştığım üzere student adında bir entity oluşturun. Varsayınlan olarak bu student entity'sine ait ekranlara erişebilmek için sisteme login olmak gerekmektedir. Çünkü hem backend tarafında hemde Frontend tarafında erişim kontrolü yapılıp eğer kullanıcı sisteme login olmamışsa bu ekranlar kullanıcıya gösterilmemektedir.

 Ancak JHipster ile proje geliştirirken  register sayfası gibi login olmadan da erişilebilecek sayfalar yapma ihtiyacınız doğabilir. Dolayısıyla böyle bir ihtiyaç doğması durumunda projede aşağıdaki değişiklikleri yaparak erkanları public erişime açabilirsiniz.

Projede forntend ve backend tarafı ayrı olduğu için hem Backend ten hemede Frontend tarafında gereken tanımlamaları yapmanız gerekmektedir.

ilk olarak Backend tarafı için  erişim tanımlamalarının yapıldığı  SecurityConfiguration#configure(HttpSecurity) methoduna giderek      .antMatchers("/api/register").permitAll()  satırının altına aşağıdaki satırları ekleyin.
 .antMatchers("/api/students").permitAll()
.antMatchers("/api/students/*").permitAll()

son hali aşağıdaki gibi olmalıdır.

.authorizeRequests()
.antMatchers("/api/authenticate").permitAll()
.antMatchers("/api/register").permitAll()
.antMatchers("/api/students").permitAll()
.antMatchers("/api/students/*").permitAll()
.antMatchers("/api/activate").permitAll()
.antMatchers("/api/account/reset-password/init").permitAll()
.antMatchers("/api/account/reset-password/finish").permitAll()
.antMatchers("/api/**").authenticated()
.antMatchers("/management/health").permitAll()
.antMatchers("/management/info").permitAll()
.antMatchers("/management/prometheus").permitAll()
.antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN)


Frontend tarafı içinse aşağıdaki dosyada canActivate olan satırları silin.
src/main/webapp/app/entities/student/student.route.ts

Yine student.route.ts dosyası içinde    authorities alanlarının karşılığını boş array olarak set edin (authorities: []).

son hali aşağıdaki şekilde olmalıdır

export const studentRoute: Routes = [
  {
    path: '',
    component: StudentComponent,
    data: {
      authorities: [],
      pageTitle: 'demoHipster.student.home.title',
    },
  },
  {
    path: ':id/view',
    component: StudentDetailComponent,
    resolve: {
      student: StudentResolve,
    },
    data: {
      authorities: [],
      pageTitle: 'demoHipster.student.home.title',
    },
  },
  {
    path: 'new',
    component: StudentUpdateComponent,
    resolve: {
      student: StudentResolve,
    },
    data: {
      authorities: [],
      pageTitle: 'demoHipster.student.home.title',
    },
  },
  {
    path: ':id/edit',
    component: StudentUpdateComponent,
    resolve: {
      student: StudentResolve,
    },
    data: {
      authorities: [],
      pageTitle: 'demoHipster.student.home.title',
    },
  },
]; 



Bu işlemden sonra angular ekranı aktif etmek için herhangi bir rule ve role aramayacak ve ekranlar public erişime açılmış olacaktır.

kaynak:
https://github.com/Tonterias/JhipsterPress
https://www.jhipster.tech/creating-an-entity/



Hiç yorum yok:

Yorum Gönderme