- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在应用程序中使用 history.replace('/user')
重定向用户,但是当我这样做时,它什么也没做。我正在使用 Auth0 并遵循他们的指南: https://auth0.com/docs/quickstart/spa/react/01-login
当我登录后重定向时,网址中显示 /user
但没有任何反应,我堆栈在 callback
组件上。更重要的是,如果我点击 logout
,它应该重定向到用户组件,它也不起作用。它只是在浏览器中显示 /user
,并不实际将它们带到页面。
import auth0 from 'auth0-js';
import createHistory from 'history/createBrowserHistory';
const history = createHistory();
export default class Auth {
constructor() {
this.login = this.login.bind(this);
this.logout = this.logout.bind(this);
this.handleAuth = this.handleAuth.bind(this);
this.isAuth = this.isAuth.bind(this);
}
auth0 = new auth0.WebAuth({
domain: 'taustin.auth0.com',
clientID: 'IL1cmtElngJNYF3Ncjpt3pCRA5NFIDZw',
redirectUri: 'http://localhost:3000/callback',
audience: 'https://taustin.auth0.com/userinfo',
responseType: 'token id_token',
scope: 'openid'
});
handleAuth() {
this.auth0.parseHash((err, authResult) => {
if (authResult && authResult.accessToken && authResult.idToken) {
this.setSession(authResult);
// redirect user to home page
history.replace('/user');
} else if (err) {
// redirect user to home page with error
history.replace('/user');
}
});
}
setSession(authResult) {
// Set how long the access token will last
let expiresAt = JSON.stringify(
authResult.expiresIn * 1000 + new Date().getTime()
);
localStorage.setItem('access_token', authResult.accessToken);
localStorage.setItem('id_token', authResult.idToken);
localStorage.setItem('expires_at', expiresAt);
// redirect user to home page or desired page
history.replace('/user');
}
logout() {
// Clear Access Token and ID Token from local storage
localStorage.removeItem('access_token');
localStorage.removeItem('id_token');
localStorage.removeItem('expires_at');
// navigate to the home route
history.replace('/user');
}
isAuth() {
// Check whether the current time is past the
// Access Token's expiry time
// If not expires at exist should automatically return false
let expiresAt = JSON.parse(localStorage.getItem('expires_at'));
return new Date().getTime() < expiresAt;
}
login() {
this.auth0.authorize();
}
}
最佳答案
我认为这应该可以解决您的问题。
import React, {Component} from 'react';
import { Router } from 'react-router';
import createHistory from 'history/createBrowserHistory';
const history = createHistory();
class App extends Component {
render(){
return (
<Router history={history}> //pass in your custom history object
// your routes come here
<Router />
)
}
}
关于reactjs - History.replace 无法使用 Auth0 从 'history/createBrowserHistory' 开始工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518728/
所以基本上我在 react 中使用历史库时遇到了问题。 是否因为最新版本,我应该尝试降级历史版本,但由于错误指出对后者的支持将在下一个主要版本中删除。那么我应该如何更改和我应该在哪里更改它? 它说:
我使用版本 1-rc 作为 React 路由器。我的路线配置如下: 访问url如下: http://localhost:300
我想使用 history 库,但我收到了这条消息: https://www.npmjs.com/package/history TypeError: (0 , _history.createBrows
我在 Chrome 控制台中看到以下错误: warnAboutDeprecatedCJSRequire.js:17 Warning: Please use `require("history").cr
我正在学习 React.js,但遇到了以下问题: 我的 React 应用程序在使用 Saga 添加“createBrowserHistory”后停止工作。 基本上,当我点击“添加到购物车”按钮时,我想
我尝试在应用程序中使用 history.replace('/user') 重定向用户,但是当我这样做时,它什么也没做。我正在使用 Auth0 并遵循他们的指南: https://auth0.com/d
我正在为我的 React 应用程序使用 react-router (createBrowserHistory)。 下面是我的代码 var ReactDOM = require('react-dom')
我正在导入 @types/history 并在我的 React 应用程序中使用它提供的 createBrowserHistory() 函数。 我收到一个 tslint 错误提示, ERROR in C
我的应用有两个页面:Step1和 Step2 . Step1有一个复选框,如果选中则阻止导航,还有一个导航到 Step2 的下一步按钮点击时。 Step2有一个返回 Step1 的上一个按钮点击时。
我使用 React 创建一个单页应用程序。在这里,在使用 React-router 时,我无法找到使用历史记录的正确方法。我尝试过以下使用方法: var React = require('react'
我是一名优秀的程序员,十分优秀!