我已经用api-platform,lexikJWTauthbundle和react-admin建立了我的网站,这在本地开发中就像是一个护身符,但是当我把它推到生产环境中时,我的管理界面登录总是返回错误“401BAD credential”,并且令牌永远不会存储在本地。我不知道为什么,因为访问者页面显示了我存储在数据库中的所有内容。所以我假设连接是正确的。
我已经尝试用"RewriteRule“"SetEnvIf”更改.htaccess了……下面是我的代码:
//authProvier.js
import {AUTH_LOGIN, AUTH_LOGOUT, AUTH_CHECK} from 'react-admin';
export default (type, params) => {
if (type === AUTH_LOGIN) {
const {username, password} = params;
const request = new Request('/admin/authentication_token', {
method: 'POST',
headers: new Headers({
'Content-Type': 'application/json'
}),
body: JSON.stringify({
username:
username,
password
}),
})
return fetch(request)
.then(response => {
console.log(response)
if (response.status < 200 || response.status >= 300) {
throw new Error(response.statusText);
}
return response.json();
})
.then(({token}) => {
localStorage.setItem('token', token);
return Promise.resolve()
});
}
if (type === AUTH_LOGOUT) {
localStorage.removeItem('token');
return Promise.resolve();
}
if (type === AUTH_CHECK) {
return localStorage.getItem('token') ? Promise.resolve() : Promise.reject();
}
return Promise.reject('Unknown method');
};// config/security.yaml
security:
role_hierarchy:
ROLE_ADMIN: [ROLE_ADMIN]
encoders:
App\Entity\AdminUser:
algorithm: argon2i
providers:
# used to reload user from session & other features (e.g. switch_user)
app_user_provider:
entity:
class: App\Entity\AdminUser
property: username
firewalls:
login:
pattern: ^/admin/authentication_token
provider: app_user_provider
stateless: true
anonymous: true
json_login:
check_path: /admin/authentication_token
username_path: username
password_path: password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
dev:
pattern: ^/_(profiler|wdt)
security: false
api:
pattern: ^/api/
anonymous: true
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
access_control:
- { path: ^/admin, roles: ROLE_ADMIN}当我console.log请求和响应时,header总是空的。
我不知道问题是来自"https“url域,还是”服务器API“是CGI/FastCGI,因为在本地它位于"http”和"Apache2.0处理程序“上。我无法访问httpd.conf文件...如果你有任何想法,请提前谢谢。
发布于 2019-08-08 20:50:51
/!\如果你对Argon2i有这个问题检查,它不被我的网络主机支持,所以我用bcrypt....
https://stackoverflow.com/questions/57330508
复制相似问题