仅允许经过身份验证的用户访问 API 路由

     2023-02-22     172

关键词:

【中文标题】仅允许经过身份验证的用户访问 API 路由【英文标题】:Allow only authenticated users to access API routes 【发布时间】:2020-01-01 12:37:45 【问题描述】:

我想只允许经过身份验证的用户访问某些 API 路由。我使用默认的 Laravel 身份验证系统。默认登录后,我希望能够访问路由,但我收到“未验证”消息。

所以,登录后,我会重定向到使用 HomeComponent 文件的主路由。在这里,使用 axios,我正在调用 step API 路由,在该路由中我试图获取经过身份验证的用户的 id,但我收到了一条错误消息。我做错了什么?

api.php

Route::middleware('auth:api')->group(function () 
    Route::get('application/step', ['as' => 'application.step', 'uses' => 'ApplicationController@step']);
);

ApplicationController.php

public function step() 
    print_r(auth()->user());
    die('---');

    // code to get authenticated user step
    return json_encode(array('step' => 7));

LoginController.php

public function login(Request $request)

    $this->validate($request, [
        'email'   => 'required|email',
        'password' => 'required|min:6'
    ]);

    $user = User::where('email', $request->email)->firstOrFail();
    if ($user && !$user->isAdmin()) 
        if (Auth::attempt(['email' => $request->email, 'password' => $request->password], true)) 
            $token = $user->createToken('TokenName')->token;
            $token->save();

            return redirect()->route('home');
        
        else 
            return back()->withInput($request->only('email'));
        
    

    return back()->withInput($request->only('email'))->withErrors(['denied' => 'You are not allowed to access this page.']);

HomeComponent.vue

...
getStep() 
    axios.get("/api/application/step")
         .then((response) => 
             this.step = response.data.step;
         )
         .catch((err) => 
             console.log('Cannot get step', err);
         );
 

【问题讨论】:

【参考方案1】:

auth:api 中间件仅适用于 Passport。这个 auth:api 中间件检查有效的访问令牌。

而且我认为您没有使用护照登录

 composer require laravel/passport

在您的情况下,您只能使用 auth 中间件而不是 auth:api

【讨论】:

如何只允许经过身份验证(登录)的用户访问 Spring RESTful 服务

】如何只允许经过身份验证(登录)的用户访问SpringRESTful服务【英文标题】:Howtoonlyallowauthenticated(loggedin)userstoaccessSpringrestfulservice【发布时间】:2017-04-2307:44:58【问题描述】:web项目的架构如下:有一个SpringMVCRESTfulWeb服务运行... 查看详情

使用 AWS AppSync(带放大),如何允许经过身份验证的用户只读访问,但只允许对象所有者的突变?

】使用AWSAppSync(带放大),如何允许经过身份验证的用户只读访问,但只允许对象所有者的突变?【英文标题】:UsingAWSAppSync(withamplify),howdoesoneallowauthenticatedusersread-onlyaccess,butonlyallowmutationsforobjectowners?【发布时间】:2020-04-1915:... 查看详情

仅针对经过身份验证的用户的 Django 缓存

】仅针对经过身份验证的用户的Django缓存【英文标题】:DjangoCachingforAuthenticatedUsersOnly【发布时间】:2012-07-2413:54:33【问题描述】:问题在Django中,如何创建仅对经过身份验证的用户可见的页面的单个缓存版本(所有用户都相同... 查看详情

如何防止经过身份验证的用户欺骗 RESTful API 调用

】如何防止经过身份验证的用户欺骗RESTfulAPI调用【英文标题】:Howtopreventauthenticateduserfromspoofingrestfulapicalls【发布时间】:2019-03-0522:11:48【问题描述】:所以我构建了一个RESTfulAPI。它有一个/account/id端点来返回用户数据。API通过... 查看详情

Blazor 使用 Azure AD 身份验证允许匿名访问

】Blazor使用AzureAD身份验证允许匿名访问【英文标题】:BlazorusingAzureADauthenticationallowinganonymousaccess【发布时间】:2020-07-0106:00:43【问题描述】:我目前正在编写一个包含默认AzureAD身份验证的(服务器端)Blazor应用程序。这对经过... 查看详情

如何允许 cognito 身份验证的用户获得对 s3 存储桶的公共访问权限

】如何允许cognito身份验证的用户获得对s3存储桶的公共访问权限【英文标题】:howtoallowcognitoauthenticateduserstogetpublicaccesstos3bucket【发布时间】:2021-10-2208:58:40【问题描述】:我希望我的Cognito身份验证用户(通过google身份提供商)... 查看详情

仅接受来自经过身份验证的用户的某些 ajax 请求

】仅接受来自经过身份验证的用户的某些ajax请求【英文标题】:Onlyacceptingcertainajaxrequestsfromauthenticatedusers【发布时间】:2010-09-0603:12:54【问题描述】:确保只接受经过身份验证的用户对某些页面的某些ajax调用的最佳做法是什么... 查看详情

通过 REST API 传递“Windows 身份验证”?

...发布时间】:2018-11-1518:50:43【问题描述】:我有权访问仅允许“Windows身份验证”的SQLServer数据库系统-即使用您的Windows登录凭据访问数据。(不使用用户名密码)。它还控制数据库权限。我想为不熟悉SQL的用户构建一个RESTAPI,... 查看详情

获取经过身份验证的用户 Laravel/Lumen Passport

】获取经过身份验证的用户Laravel/LumenPassport【英文标题】:GetAuthenticatedUserLaravel/LumenPassport【发布时间】:2018-05-0412:54:31【问题描述】:我正在使用lumen构建我的api和护照以进行api身份验证。我的用户信息都记录在用户表中,而... 查看详情

如何使用 API 中间件在 Laravel 中测试 PHPUnit 一个经过身份验证的用户?

】如何使用API中间件在Laravel中测试PHPUnit一个经过身份验证的用户?【英文标题】:HowtotestPHPUnitanauthenticateduseronLaravelwithAPImiddelware?【发布时间】:2020-04-1921:23:23【问题描述】:我正在尝试测试需要经过身份验证的用户的路由和... 查看详情

如何从 Nuxt 前端访问经过身份验证的 GraphQL API

】如何从Nuxt前端访问经过身份验证的GraphQLAPI【英文标题】:HowtoaccessauthenticatedGraphQLAPIfromNuxtfrontend【发布时间】:2021-02-2301:58:08【问题描述】:我有一个使用Appsync和Cognito(基本电子邮件和密码身份验证)创建的经过身份验证的... 查看详情

Liferay API 调用需要经过身份验证的访问

】LiferayAPI调用需要经过身份验证的访问【英文标题】:LiferayAPIcallrequiresauthenticatedaccess【发布时间】:2016-08-0119:48:44【问题描述】:我们正在通过邮递员进行LiferayAPI调用...localhost:9080/api/jsonws/journalarticle/get-article/group-id/21333/articl... 查看详情

如何为所有经过身份验证的用户授予访问权限?

】如何为所有经过身份验证的用户授予访问权限?【英文标题】:Howtograntaccessforallauthenticatedusers?【发布时间】:2010-10-0720:50:16【问题描述】:需要使用SpringSecurity向没有任何角色的用户授予访问权限。必须授予任何人如何处理... 查看详情

在 Blazor 中的视图之外访问经过身份验证的用户

】在Blazor中的视图之外访问经过身份验证的用户【英文标题】:AccessinganauthenticateduseroutsideofaviewinBlazor【发布时间】:2020-05-0119:17:03【问题描述】:在我的服务器端Blazor应用程序中,身份验证是以非常规的方式处理的。本质上,... 查看详情

Spring Cloud - 如何仅允许访问特定微服务的端点?

】SpringCloud-如何仅允许访问特定微服务的端点?【英文标题】:SpringCloud-howtoallowaccesstoendpointforspecificmicroserviceonly?【发布时间】:2017-12-1219:07:41【问题描述】:我有简单的微服务架构:边缘服务服务注册表身份验证服务(我使用... 查看详情

带有身份验证的 Laravel api 路由

】带有身份验证的Laravelapi路由【英文标题】:Laravelapirouteswithauth【发布时间】:2017-12-0507:51:27【问题描述】:我正在尝试创建一个只有在发出请求的用户登录时才能访问的api路由。这就是我在routes/api.php中的内容,但它返回"... 查看详情

反应路由器经过身份验证的路由问题

】反应路由器经过身份验证的路由问题【英文标题】:ReactRouterAuthenticatedRoutesIssue【发布时间】:2017-09-2621:02:49【问题描述】:我正在尝试在react-router网站上复制authenticatingspecificroutes的逻辑。在大多数情况下,它工作正常,但是... 查看详情

如何只允许自己的页面访问 API?

】如何只允许自己的页面访问API?【英文标题】:HowtoallowaccesstoAPIonlyforownpages?【发布时间】:2016-12-0119:01:56【问题描述】:我正在开发提供RESTAPI的SpringBootWeb应用程序。我的大部分页面(thymeleaf模板)都使用这个API与后端通信(... 查看详情