如何使用 AngularFire2 中的 emailVerified 重定向电子邮件未验证的用户?
How do I use emailVerified from AngularFire2 to redirect a user whose email in not verified?
我找不到使用 emailVerified AngularFire2 导出管道重定向电子邮件尚未从特定路由验证的用户的示例。
提供了有关如何使用 redirectLoggedInTo(redirect)、redirectUnauthorizedTo(redirect) 和 hasCustomClaim(claim) 的用例。
AngularFire 团队很方便地避免在他们的 GitHub 页面上放一个例子:https://github.com/angular/angularfire/blob/master/docs/auth/router-guards.md
在源代码中emailVerified
是:
export const emailVerified: AuthPipe = map(user => !!user && user.emailVerified)
所以你可以像这样使用第二个 map
:
import { AngularFireAuthGuard, emailVerified } from '@angular/fire/auth-guard'
import { map } from 'rxjs/operators'
...
const redirectUnverifiedUser = () =>
pipe(
emailVerified,
map(emailVerified => {
if (emailVerified) {
return true;
} else {
return ['login', 'verify-email']
}
})
);
...然后在您的路由配置中:
{
path: 'example',
...
canActivate: [AngularFireAuthGuard],
data: { authGuardPipe: redirectUnverifiedUser },
},
如果您需要将 未授权 用户重定向到您的登录页面,同时还需要将未验证电子邮件的 授权 用户重定向到一个不同的页面然后你可以使用这个:
import { AngularFireAuthGuard, AuthPipeGenerator } from '@angular/fire/auth-guard'
import { map } from 'rxjs/operators'
...
const redirectUnauthorizedOrUnverifiedUser: AuthPipeGenerator = () =>
map(user => {
if (user) {
if (user.emailVerified) {
return true
} else {
return ['login', 'verify-email']
}
} else {
return ['login']
}
})
...然后在您的路由配置中:
{
path: 'example',
...
canActivate: [AngularFireAuthGuard],
data: { authGuardPipe: redirectUnauthorizedOrUnverifiedUser },
},
我找不到使用 emailVerified AngularFire2 导出管道重定向电子邮件尚未从特定路由验证的用户的示例。
提供了有关如何使用 redirectLoggedInTo(redirect)、redirectUnauthorizedTo(redirect) 和 hasCustomClaim(claim) 的用例。
AngularFire 团队很方便地避免在他们的 GitHub 页面上放一个例子:https://github.com/angular/angularfire/blob/master/docs/auth/router-guards.md
在源代码中emailVerified
是:
export const emailVerified: AuthPipe = map(user => !!user && user.emailVerified)
所以你可以像这样使用第二个 map
:
import { AngularFireAuthGuard, emailVerified } from '@angular/fire/auth-guard'
import { map } from 'rxjs/operators'
...
const redirectUnverifiedUser = () =>
pipe(
emailVerified,
map(emailVerified => {
if (emailVerified) {
return true;
} else {
return ['login', 'verify-email']
}
})
);
...然后在您的路由配置中:
{
path: 'example',
...
canActivate: [AngularFireAuthGuard],
data: { authGuardPipe: redirectUnverifiedUser },
},
如果您需要将 未授权 用户重定向到您的登录页面,同时还需要将未验证电子邮件的 授权 用户重定向到一个不同的页面然后你可以使用这个:
import { AngularFireAuthGuard, AuthPipeGenerator } from '@angular/fire/auth-guard'
import { map } from 'rxjs/operators'
...
const redirectUnauthorizedOrUnverifiedUser: AuthPipeGenerator = () =>
map(user => {
if (user) {
if (user.emailVerified) {
return true
} else {
return ['login', 'verify-email']
}
} else {
return ['login']
}
})
...然后在您的路由配置中:
{
path: 'example',
...
canActivate: [AngularFireAuthGuard],
data: { authGuardPipe: redirectUnauthorizedOrUnverifiedUser },
},