как использовать sessionStorage вместо localStorage в угловых 7? - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в угловых и asp.net веб API.Я создаю сайт, используя asp.net web api и angular 7, и я выполнил регистрацию и вход в систему, но теперь мне нужно использовать sessionStorage вместо localStorage в угловом коде.Я делюсь всеми этими файлами, где я использую localStorage и код localStorage работает отлично, но теперь мне нужно использовать sessionStorage .it показать всю информацию о пользователе, который является логином в настоящее время. Пожалуйста, помогите мне.Спасибо. Я делюсь всем кодом, который я сделал для localstorage. Я знаю, что это сбивает с толку, но надеюсь, что вы можете решить мою проблему.

Это класс перехватчика

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

    constructor(private router: Router) {

    }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        if (localStorage.getItem('token') != null) {
            const clonedReq = req.clone({
                headers: req.headers.set('Authorization', 'Bearer ' + localStorage.getItem('token'))
            });
            return next.handle(clonedReq).pipe(
                tap(
                    succ => { },
                    err => {
                        if (err.status == 401){
                            localStorage.removeItem('token');
                            this.router.navigateByUrl('/user/login');
                        }
                    }))}
        else
            return next.handle(req.clone());
    }}


  //login compnent ts file 
    @Component({
      selector: 'app-login',
      templateUrl: './login.component.html',
      styles: []
    })
    export class LoginComponent implements OnInit {

      formModel ={
        UserName :'',
        Password:''
      }
      constructor(private service: UserService, private router: Router, private toastr: ToastrService) { }

      ngOnInit() {
    if (localStorage.getItem('token') != null)
      this.router.navigateByUrl('/home');
  }
  onSubmit(form: NgForm) {
    this.service.login(form.value).subscribe(
      (res: any) => {
        localStorage.setItem('token', res.token);
        this.router.navigateByUrl('/home');
      },
      err => {
        if (err.status == 400)
          this.toastr.error('Incorrect username or password.', 'Authentication failed.');
        else
          console.log(err);
      }
    );
  }

}

// файл auth.grud.ts

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {

  constructor(private router: Router) {

  }
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): boolean {
    if (localStorage.getItem('token') != null)
      return true;
    else {
      this.router.navigate(['/user/login']);
      return false;
    }

  }
}

// home component.ts file

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styles: []
})
export class HomeComponent implements OnInit {
  userDetails;

  constructor(private router: Router, private service: UserService) { }

  ngOnInit() {
    this.service.getUserProfile().subscribe(
      res => {
        this.userDetails = res;
      },
      err => {
        console.log(err);
      },
    );
  }

  onLogout() {
    localStorage.removeItem('token');
    this.router.navigate(['/user/login']);
  }
}

пожалуйста, скажите мне, как я могу выполнить эту задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...