0

페이지를 새로 고친 후 인증이 지속되지 않는 것처럼 보입니다. 로그인 할 때마다 성공적으로 리디렉션됩니다. 하지만 새로 고침을 할 때 더 이상 액세스 할 수 없습니다. 여기 각도 auth.guard no persisten auth

난 것은 문제가, 정식 가드

라우터

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 
import { FormsModule } from '@angular/forms'; 
import { AppRoutingModule } from './app-routing.module'; 
import { AppComponent } from './app.component'; 
import { NavComponent } from './components/nav/nav.component'; 
import { HomeComponent } from './components/home/home.component'; 
import { GalleryComponent } from './components/gallery/gallery.component'; 
import { FooterComponent } from './components/footer/footer.component'; 

import { AngularFireModule } from 'angularfire2'; 
import { AngularFireAuthModule } from 'angularfire2/auth'; 
import { AngularFireDatabaseModule, AngularFireDatabase } from 'angularfire2/database'; 
import { FIREBASECONFIG as firebaseConfig } from './config/firebase-config'; 

import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; 
import { ScrollToModule } from 'ng2-scroll-to'; 
import { NgxCarouselModule } from 'ngx-carousel'; 
import { AnimateOnScrollModule } from 'ng2-animate-on-scroll'; 

import { AuthService } from './services/auth.service'; 
import { AuthGuard } from './services/auth.guard.service'; 

import { HttpClientModule, HttpClient } from '@angular/common/http'; 
import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; 
import { TranslateHttpLoader } from '@ngx-translate/http-loader'; 


const routes: Routes = [ 
    { path: '', component: HomeComponent }, 
    { path: 'gallery', component: GalleryComponent, canActivate: [AuthGuard] } 
]; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    NavComponent, 
    HomeComponent, 
    GalleryComponent, 
    FooterComponent, 
    ], 
    imports: [ 
    FormsModule, 
    BrowserModule, 
    AppRoutingModule, 
    NgxCarouselModule, 
    NgbModule.forRoot(), 
    ScrollToModule.forRoot(), 
    RouterModule.forRoot(routes), 
    AnimateOnScrollModule.forRoot(), 
    HttpClientModule, 
    AngularFireModule.initializeApp(firebaseConfig), 
    AngularFireAuthModule, 
    AngularFireDatabaseModule, 
    TranslateModule.forRoot({ 
     loader: { 
     provide: TranslateLoader, 
     useFactory: HttpLoaderFactory, 
     deps: [HttpClient] 
     } 
    }) 
    ], 
    exports: [ 
    TranslateModule 
    ], 
    providers: [AngularFireDatabase, AuthService, AuthGuard], 
    bootstrap: [AppComponent] 
}) 

auth.guard.ts

import { Observable } from 'rxjs/Observable'; 
import { AuthService } from './auth.service'; 
import { AngularFireAuth } from 'angularfire2/auth'; 
import { Injectable, OnInit } from '@angular/core'; 
import { CanActivate, Router, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'; 

@Injectable() 
export class AuthGuard implements CanActivate { 
    public user = null; 
    constructor(private fireauth: AngularFireAuth, private router: Router) { 
    this.fireauth.auth.onAuthStateChanged((user) => { 
     if (user) { 
     this.user = this.fireauth.auth.currentUser; 
     } 
    }); 
    } 

    ongOnInit() { 
    } 

    canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): any { 
    if (this.user) { 
     return true; 
    } else { 
     this.router.navigate(['']); 
     return false; 
    } 
    } 
} 

노선이 나를에 따라 확인되어있다 대부분은 인증 가드에 있어야합니다.

+0

에 사용되는 this.fireauth.auth.onAuthStateChanged 생각이 코드

constructor( private router:Router, public fireauth:AngularFireAuth ){} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> { return this.fireauth.authState.map((auth) => { if(auth == null) { this.router.navigate(['/']); return false; } else { return true; } }); } 

을보십시오. – Hareesh

+0

로그인 후 사용자를 이동하는 경로는 무엇입니까? – Hareesh

+0

사용자 로그인 후 갤러리 경로 –

답변

2

내가 또한 라우터 설정을 게시 이전 버전

+0

네, 사용 해 줘서 고마워요. –