【问题标题】:Authentication by passport working in local but not in server通过护照在本地工作但不在服务器中的身份验证
【发布时间】:2019-07-04 13:15:45
【问题描述】:

所以基本上我有一个用 laravel 和 react 制作的应用程序,它工作正常,在我将它部署到实时服务器后,护照身份验证不起作用。似乎“授权”标头不会发送到服务器,对于该问题,我还更改了“.htaccess”文件但没有更改。

这是我的“.htaccess”文件。

选项 - 多视图

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

# Handle Authorization HeaderRewriteEngine On
RewriteEngine On 
RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

#Https redirection 
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) MY_SITE/$1 [R=301,L]

【问题讨论】:

  • 你怎么知道服务器没有接收到标头?你用什么检查的?
  • 我使用 Insomnia (Postman Alternative) 来查看我没有收到响应消息中的标头。
  • 授权头不是由服务器在响应中发送的,它只是由客户端发送到服务器。你的意思是你没有收到其他一些标题?您是否检查过您的控制器是否可以访问 $request->header('Authorization') 值以查看您没有在请求中获取标头?
  • 是的,我检查过了,它在我的本地服务器上运行良好,但它在实时共享托管服务器上给我带来了问题
  • 你发现问题了吗?

标签: php laravel .htaccess authentication laravel-passport


【解决方案1】:

这里有几件事需要仔细检查:

  • mod_rewrite 已启用
  • AllowOverride 已启用
  • 您的托管服务提供商实际上正在使用 Apache
  • 浏览器控制台中没有 CORS 错误

可能不是原因,但是您的 Authorization 标头的重写条件与框架附带的条件略有不同。这是默认值:

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

【讨论】:

  • 我搜索了解决方案,然后相应地更新了我的 htaccess 文件。仍然当我尝试访问 laravel 护照保护路径时,它不接受标题。
猜你喜欢
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2016-10-29
  • 2017-02-06
  • 2014-03-17
  • 2020-07-11
  • 2016-10-19
相关资源
最近更新 更多