【问题标题】:Laravel 5.4 use JWTauth along with normal authenticationLaravel 5.4 使用 JWTauth 和普通身份验证
【发布时间】:2019-08-20 16:41:05
【问题描述】:

我和我的朋友正在创建一个应用程序。我使用 Laravel 5.4 作为后端,他使用 Angular2 作为前端。

Laravel 项目用作带有 JWTauth 令牌身份验证的 REST API。 现在我想在 Laravel 项目中制作一个只有管理员才能访问的小型后端仪表板。

当我只是浏览到 api 后端部分时,我将如何使用不同的身份验证(带会话)而不是令牌?

【问题讨论】:

    标签: laravel authentication


    【解决方案1】:

    这很简单。只需将 JWT 身份验证中间件应用于 API 路由,将普通身份验证中间件应用于您的管理仪表板。您甚至不需要调整任何东西,因为 JWT 不需要更改您的表结构或更改现有的身份验证。

    使用 authguest 中间件使用内置的 int auth 脚手架构建后端仪表板。对于 api 路由,如果您使用的是 tymondesigns/jwt-auth 包,请使用标准的 api 中间件和 jwt.auth 中间件。这两者不会有冲突。

    【讨论】:

    • 我知道我可以使用中间件,但这不会让我正确登录。我只是浏览到 /login 路由,它显示了登录表单,我登录,然后我得到了从 api 获得的响应。带有令牌和东西的 JSON 格式的用户模型......而且我没有通过会话登录,如果我转到 /home,它会再次提示我进入登录页面。
    • 你需要分开你的路线。将仪表板路由保留在web.php 中,并为此使用标准身份验证。然后你有正常流程的会话和cookies。为什么要混合使用 api 和仪表板路由?如果这样做,只会使代码库复杂化。
    • 不,我完全按照你说的做。我将仪表板路由放在带有中间件“web”的 web.php 文件中,api 路由在带有 auth:api 中间件的 api.php 文件中......仍然当我登录时,它就像 API 的登录方法一样触发...
    • 你需要重新检查你的路由和应用到它们的中间件。运行php artisan route:list,它应该让您清楚地了解您的路线以及应用于每条路线的中间件。
    • 这就是问题所在,两个登录名(用于 api 和 web)都是相同的,这些都使用 LoginController@Login 方法......我怎样才能让 web 中间件使用正常登录?
    【解决方案2】:

    兄弟使用单独的守卫,例如

    $loginUser = Auth::guard('web')->loginUsingId(12,true);  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 2017-12-24
      • 2020-10-06
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      相关资源
      最近更新 更多