我正在学习弹簧靴并做出反应。我已经成功地学习了如何使用前端maven插件将两者结合起来。同样是JWT的一种工作方式(至少api调用会在令牌有效时返回我想要的内容,并在我设置快速到期时间时返回错误)。但是反应路线很奇怪。我对我需要从Web安全配置Java文件中排除的内容有疑问。如果我排除太多,我将看不到主页。我想我已经找到了解决方案,但现在无法重新加载。您能帮我在这里找到问题吗?我希望JWT为API工作,并且希望能够访问页面并重新加载它们。 我的WebSecurityConfig:
import axios from 'axios'
class AuthenticationService {
executeJwtAuthenticationService(username, password) {
return axios.post('http://localhost:8090/authenticate', {
username,
password
})
}
executeHelloService() {
console.log("===executeHelloService===")
return axios.get('http://localhost:8090/hello');
}
registerSuccessfulLoginForJwt(username, token) {
console.log("===registerSuccessfulLoginForJwt===")
localStorage.setItem('token', token);
localStorage.setItem('authenticatedUser', username);
this.setupAxiosInterceptors();
}
createJWTToken(token) {
return 'Bearer ' + token
}
setupAxiosInterceptors() {
axios.interceptors.request.use(
config => {
const token = localStorage.getItem('token');
if (token) {
config.headers['Authorization'] = 'Bearer ' + token;
}
return config;
},
error => {
Promise.reject(error)
});
}
logout() {
localStorage.removeItem("authenticatedUser");
localStorage.removeItem("token");
}
isUserLoggedIn() {
const token = localStorage.getItem('token');
console.log("===UserloggedInCheck===");
console.log(token);
if (token) {
return true;
}
return false;
}
getLoggedInUserName() {
let user = localStorage.getItem('authenticatedUser');
if(user===null) return '';
return user;
}
}
export default new AuthenticationService()
我找到了这个文件,它可以解析404进行索引:
{
"name": "jwt-login-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"axios": "^0.19.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.2.0",
"react-scripts": "3.4.1"
},
"scripts": {
"start": "set PORT=4200 && react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:8090",
"homepage": "."
}
身份验证服务:
server.port=8090
jwt.secret=godaejwt
spring.mvc.static-path-pattern = /**.* --this is for the WebConfig
我的Package.json:
gatsby
和资源属性:
npm i gatsby