我正在使用react和redux实现基本的firebase身份验证.我根据此链接上的react-router示例创建了受保护的路由,到目前为止一切正常.
现在,我从我的auth reducer获取用户身份验证时设置的用户的loggedIn状态,但我希望在页面刷新后使用onAuthStateChanged()保持loggedIn状态.
我应该在哪里放置onAuthStateChanged()函数?有没有最好的做法来使用它?
我的代码供以下参考:
App.js
<PrivateRoute path="/dashboard" component={Dashboard} />
<Route path="/login" component={Login} />
Run Code Online (Sandbox Code Playgroud)
ProtectedRoute.js
const PrivateRoute = ({ component: Component, ...rest }) => {
const { loggedIn } = rest;
return (
<Route {...rest} render={props => (
loggedIn ? (<Component {...props} />) : (
<Redirect to={{
pathname: '/login',
state: { from: props.location }
}} />
)
)} />
)
}
function mapStateToProps({auth}){
return {
loggedIn: auth.loggedIn
}
}
export default connect(mapStateToProps)(PrivateRoute);
Run Code Online (Sandbox Code Playgroud)
actions_auth.js
export const loginUser = ({ …Run Code Online (Sandbox Code Playgroud) typescript reactjs react-router firebase-authentication react-redux
我在 CRA 反应应用程序中使用哨兵浏览器。我创建了一个错误边界组件,并使用它来捕获错误。
到目前为止一切顺利,我发现了错误并成功将其记录到哨兵。
当我想传递用户信息或设置标签时,问题就出现了;这些信息不会被传递,除非我将它设置在我的索引文件中(但这样我无权访问商店,因此无法访问当前用户信息)。
那么,我应该在哪里调用 Sentry.configureScope() 来设置这些信息?
编辑: 我意识到 sentry.configureScope() 实际上在我的记录器函数中工作正常。问题是我试图用 ErrorBoundary 包装 App,除非在启动时错误已经存在,否则它不会被引导。
现在,如果我想保持基本粒度,如何避免将每个组件都包装在 ErrorBoundary 中?
我的代码如下:
指数:
Sentry.init({
dsn: "https://xxxxx.yyyyyyyyy",
environment: process.env.NODE_ENV,
release: '0.1.0'
})
// HERE IT WOULD WORK --------- BUT I HAVE NO STORE ACCESS
/* Sentry.configureScope(scope => {
scope.setExtra('battery', 0.7);
scope.setTag('user_access', 'admin');
scope.setUser({ id: '555' });
}); */
ReactDOM.render(
<Provider store={store}>
<LocalizeProvider store={store}>
<PersistGate loading={<Spinner />} persistor={persistor}>
<ErrorBoundary>
<App />
</ErrorBoundary>
</PersistGate>
</LocalizeProvider>
</Provider>,
document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
错误边界.JS
import * as React from 'react'
import * …Run Code Online (Sandbox Code Playgroud) 我知道以前有人问过这个问题,但答复并没有真正帮助我的案子。我正在尝试在 S3 中创建一个存储桶,但我总是收到“存储桶名称已存在”错误。我尝试了任何可能的组合,但没有运气,格式也符合文档。
知道我做错了什么吗?
谢谢
我正在创建一个表单,在 react-redux 中更改用户密码。我想知道如何验证用户当前密码以更改为新密码。在我的表单中,我有 2 个字段:旧密码,新密码。
这是我的行动:
const { currentUser } = auth
currentUser.updatePassword(newPassword)
.then(
success => {
dispatch({
type: CHANGE_USER_PASSWORD_SUCCESS,
payload: currentUser
})
},
error => {
dispatch({
type: CHANGE_USER_PASSWORD_FAIL,
error: error.message
})
}
)
Run Code Online (Sandbox Code Playgroud)
我想知道,如何在 firebase 中验证旧密码?我应该使用 signInWithEmailAndPassword() 吗?或者,是否有一个功能可以验证当前密码而无需再次调用 signIn,因为我的用户已经登录?谢谢
javascript firebase reactjs firebase-authentication react-redux
reactjs ×3
react-redux ×2
amazon-s3 ×1
firebase ×1
javascript ×1
logging ×1
react-16 ×1
react-router ×1
sentry ×1
typescript ×1