Laravel 认证不保留
Laravel Authentication not remain
我创建了一个 API 来登录我的网络应用程序。检查参数后,使用Auth方法:loginUsingId()和要登录的用户id。
之后我得到了正确的身份验证,实际上做了一个 echo Auth::user() 正确地显示了用户 属性。
但是,通过重定向到另一个项目页面,我不再登录门户并显示登录页面。
似乎用户的会话没有保留或根本没有创建。
我使用 Laravel 5.6。我没有路由的中间件。
每次您的页面访问 API,它实际上是在与 API 的一个全新实例对话。
这样想。您的 "login" 端点实际上并没有告诉 API 登录某人。它告诉它只是验证调用者关于给定密码属于给定用户的声明,故事结束。如果您想从 UI 的角度将该身份验证转变为实际的 "login" 行为,您还需要采取其他步骤。
如果 Laravel 正在为您的网站提供 Blade 文件,那就另当别论了。 Out-of-the-box,它会为你生成一个Php session,并将session-key cookie发送给浏览器,供后续请求使用。
类似于 session-key,为了在网站和单独的 API 之间维护 session,您需要在每个后续调用中包含一个令牌。并且您需要登录端点在成功验证后提供该令牌。
护照是一种方式,但对您的情况来说可能有点过头了。 Passport 适用于处理用户、客户端和授权权限。但是,如果您想要的只是身份验证,而不关心控制他们可以访问的内容,那么我强烈建议 Tymon JWT-Auth。
Passport 和 JWT-Auth 在 'Authorization' header 中使用 "bearer tokens"。不过还有其他类型,例如 "basic tokens"。基本令牌只是用户名和密码的编码串联。 Laravel supports this 使用路由中间件,但我仍然建议使用 JWT。
JWT 的优点之一是您实际上可以在令牌本身中包含无关数据。它使您更好地依靠 Passport (OAuth2) if/when 您需要它,不需要您的 client-side 更改其身份验证方法。
我创建了一个 API 来登录我的网络应用程序。检查参数后,使用Auth方法:loginUsingId()和要登录的用户id。
之后我得到了正确的身份验证,实际上做了一个 echo Auth::user() 正确地显示了用户 属性。
但是,通过重定向到另一个项目页面,我不再登录门户并显示登录页面。
似乎用户的会话没有保留或根本没有创建。
我使用 Laravel 5.6。我没有路由的中间件。
每次您的页面访问 API,它实际上是在与 API 的一个全新实例对话。
这样想。您的 "login" 端点实际上并没有告诉 API 登录某人。它告诉它只是验证调用者关于给定密码属于给定用户的声明,故事结束。如果您想从 UI 的角度将该身份验证转变为实际的 "login" 行为,您还需要采取其他步骤。
如果 Laravel 正在为您的网站提供 Blade 文件,那就另当别论了。 Out-of-the-box,它会为你生成一个Php session,并将session-key cookie发送给浏览器,供后续请求使用。
类似于 session-key,为了在网站和单独的 API 之间维护 session,您需要在每个后续调用中包含一个令牌。并且您需要登录端点在成功验证后提供该令牌。
护照是一种方式,但对您的情况来说可能有点过头了。 Passport 适用于处理用户、客户端和授权权限。但是,如果您想要的只是身份验证,而不关心控制他们可以访问的内容,那么我强烈建议 Tymon JWT-Auth。
Passport 和 JWT-Auth 在 'Authorization' header 中使用 "bearer tokens"。不过还有其他类型,例如 "basic tokens"。基本令牌只是用户名和密码的编码串联。 Laravel supports this 使用路由中间件,但我仍然建议使用 JWT。
JWT 的优点之一是您实际上可以在令牌本身中包含无关数据。它使您更好地依靠 Passport (OAuth2) if/when 您需要它,不需要您的 client-side 更改其身份验证方法。