如何在NGRX中使用身份验证防护

mattc19

我在Angular应用中使用NGRX,并且尝试使用身份验证防护。当应用启动时,我调度一个从服务器(firebase)获取身份验证状态的操作。问题是,如果我直接转到由auth防护程序保护的链接,则默认的auth状态为false,以便返回并重定向到登录页面。

这是我的canActivate方法

canActivate() {
        return this.store.select(fromAuth.getAuthenticatedStatus).pipe(
            //filter(isAuth => isAuth == true || isAuth == false),
            take(1),
            map((isAuth: boolean) => isAuth),
            catchError(() => of(false))
        )
    }

有没有办法等到从服务器返回身份验证状态之后再检查存储中的身份验证状态?我尝试过过滤器并删除了take运算符,但似乎没有用。

我不想将对服务器的调用放在auth Guard中,因为我不希望每次切换页面时都对服务器进行检查。

赌注

那里您有:

@Injectable()
export class LoggedGuard implements CanActivate {

    constructor(private auth: AngularFireAuth, private router: Router) { }

    canActivate() {
        return this.auth.authState.pipe(
            take(1),
            map(user => !!user), // !! convert User object to boolean value
            tap(isLogged => {
                if(!isLogged) {
                    this.router.navigate(['/login'])
                    console.log("You are not logged in. You cannot access route.")
                }
            })
        )
    }
}

在这种情况下,我希望向Firebase发出请求以获取新的身份验证状态,而不是从存储中获取该身份。如果您为有某些主张的人提供保护,这一点就尤为重要,因为如果您删除某个管理员,他可能仍然有较旧的主张。

如果您将存储连接到浏览器中的某些“ LocalDatabase”,Firebase将拥有自己的IndexedDB,并且错误地您的应用将从本地检索数据,并且不会检查更新。您甚至可以禁止他登录并删除他的帐户,从而导致无数登录用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Okta中使用Firebase身份验证?

来自分类Dev

如何在基本身份验证中使用RestTemplate

来自分类Dev

如何在DataZen中使用标头身份验证?

来自分类Dev

如何在Django REST Framework中使用身份验证

来自分类Dev

在Laravel 5中使用多个身份验证防护时的重定向循环

来自分类Dev

在Laravel 5中使用多个身份验证防护时的重定向循环

来自分类Dev

如何使用相同的身份验证防护来验证多种类型的用户[流明]

来自分类Dev

如何在 OWIN 应用程序中使用 cookie 身份验证和 WsFederation 身份验证

来自分类Dev

如何在Kubernetes的HTTP活动探针中使用基本身份验证?

来自分类Dev

如何在Spring Security中使用LDAP身份验证创建令牌

来自分类Dev

如何在C#中使用基本身份验证在github上创建要点

来自分类Dev

如何在R中使用httr对shibboleth多主机名网站进行身份验证

来自分类Dev

如何在Dart中使用Oauth2在Google Fusion Tables中进行身份验证?

来自分类Dev

如何在Flask的蓝图中使用身份验证装饰器

来自分类Dev

如何在Phoenix框架中使用Ueberauth和Guardian对用户进行身份验证

来自分类Dev

在PHP中使用HTTP基本身份验证时如何在后台显示图像

来自分类Dev

如何在PHP代码的cURL调用中使用令牌(-u)进行身份验证?

来自分类Dev

如何在angular.js中使用令牌管理身份验证?

来自分类Dev

如何在我的android应用中使用wordpress身份验证进行用户登录

来自分类Dev

如何在Grails中使用Spring Security Rest插件进行身份验证

来自分类Dev

如何在Flyway中使用Spring Boot / Spring Security的JDBC身份验证

来自分类Dev

如何在Django REST Framework身份验证中使用Graphene GraphQL框架

来自分类Dev

如何在Laravel 5.2中使用多重身份验证

来自分类Dev

如何在Identity Server 3中使用Windows身份验证?

来自分类Dev

如何在Azure逻辑应用程序中使用OAuth 2.0身份验证?

来自分类Dev

如何在C#中使用预先隐藏的mysql密码对登录进行身份验证?

来自分类Dev

如何在Akveo Nebular身份验证组件中使用ngx-translate

来自分类Dev

如何在Servant中使用通用身份验证访问阅读器monad

来自分类Dev

如何在Bot框架中使用自定义身份验证服务器?

Related 相关文章

  1. 1

    如何在Okta中使用Firebase身份验证?

  2. 2

    如何在基本身份验证中使用RestTemplate

  3. 3

    如何在DataZen中使用标头身份验证?

  4. 4

    如何在Django REST Framework中使用身份验证

  5. 5

    在Laravel 5中使用多个身份验证防护时的重定向循环

  6. 6

    在Laravel 5中使用多个身份验证防护时的重定向循环

  7. 7

    如何使用相同的身份验证防护来验证多种类型的用户[流明]

  8. 8

    如何在 OWIN 应用程序中使用 cookie 身份验证和 WsFederation 身份验证

  9. 9

    如何在Kubernetes的HTTP活动探针中使用基本身份验证?

  10. 10

    如何在Spring Security中使用LDAP身份验证创建令牌

  11. 11

    如何在C#中使用基本身份验证在github上创建要点

  12. 12

    如何在R中使用httr对shibboleth多主机名网站进行身份验证

  13. 13

    如何在Dart中使用Oauth2在Google Fusion Tables中进行身份验证?

  14. 14

    如何在Flask的蓝图中使用身份验证装饰器

  15. 15

    如何在Phoenix框架中使用Ueberauth和Guardian对用户进行身份验证

  16. 16

    在PHP中使用HTTP基本身份验证时如何在后台显示图像

  17. 17

    如何在PHP代码的cURL调用中使用令牌(-u)进行身份验证?

  18. 18

    如何在angular.js中使用令牌管理身份验证?

  19. 19

    如何在我的android应用中使用wordpress身份验证进行用户登录

  20. 20

    如何在Grails中使用Spring Security Rest插件进行身份验证

  21. 21

    如何在Flyway中使用Spring Boot / Spring Security的JDBC身份验证

  22. 22

    如何在Django REST Framework身份验证中使用Graphene GraphQL框架

  23. 23

    如何在Laravel 5.2中使用多重身份验证

  24. 24

    如何在Identity Server 3中使用Windows身份验证?

  25. 25

    如何在Azure逻辑应用程序中使用OAuth 2.0身份验证?

  26. 26

    如何在C#中使用预先隐藏的mysql密码对登录进行身份验证?

  27. 27

    如何在Akveo Nebular身份验证组件中使用ngx-translate

  28. 28

    如何在Servant中使用通用身份验证访问阅读器monad

  29. 29

    如何在Bot框架中使用自定义身份验证服务器?

热门标签

归档