Comments (6)
I solved the issue by creating this middleware and adding it to the "api" group.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Http\Request;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Support\Exceptions\Auth\AuthenticationRequiredException;
class EnsureFallbackAuthGuard extends Middleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*
* @throws \Illuminate\Auth\AuthenticationException
*/
public function handle($request, Closure $next, ...$guards)
{
$this->authenticate($request, ['api', 'airlock']);
return $next($request);
}
/**
* Determine if the user is logged in to any of the given guards.
*
* @param \Illuminate\Http\Request $request
* @param array $guards
* @return void
*/
protected function authenticate($request, array $guards)
{
try {
parent::authenticate($request, $guards);
} catch (AuthenticationException $e) {} // catch and do nothing
}
}
it essentially forces this:
https://github.com/laravel/framework/blob/6.x/src/Illuminate/Auth/Middleware/Authenticate.php#L63
from sanctum.
Share your route definition.
from sanctum.
Unnecessary. You don’t need this to do what you want to do. It’s already built into Laravel. If you want to share your original route definition go ahead.
from sanctum.
@taylorotwell I don't believe it checks all guards for non-auth routes though right? I'll try show example:
Route::name('brand.')->prefix('brand')->middleware('auth:api,airlock')->group(function () {
Route::get('/', 'BrandController@index')->name('index'); // This checks "api" guard but fallsback to "airlock"
});
Route::name('user.')->prefix('user')->group(function () {
Route::get('/', 'UserController@index')->name('index'); // This only checks "api" guard as it's the default guard
});
from sanctum.
If you feel there is broken behavior send a PR with a fix and a test.
from sanctum.
I have this same problem. A possibly fix is to allow the auth config to take the same guard array. Something like
'defaults' => [
'guard' => 'web,api',
'passwords' => 'users',
],
Your workaround isn't too bad @KieronWiltshire
from sanctum.
Related Issues (20)
- Direct links to API routes HOT 1
- Migration file conflicts HOT 1
- Standalone tokens (without user model / tokenable_type relationship) HOT 1
- Update from 2.x to 3.x - isValidBearerToken() - ctype_digit() HOT 1
- SPA authentication leads to '400: bad request error' HOT 1
- Update to Laravel 11 causes 401 issues when using stateful domains HOT 1
- Issue with overriding default model HOT 1
- Could we have a more descriptive method on the request to access the model? HOT 2
- supportsToken is tied to a specific implementation detail HOT 7
- Unable to validate password using validation rules HOT 3
- Only in Sanctum 3 - Fix/unable to logout HOT 1
- Sanctum v3.3 - unable to logout HOT 1
- Sanctum should not change session config HOT 3
- Login succeeded, log out, then log in to another account error
- Handle JSON Response in guest Middleware - RedirectIfAuthenticated out of the box HOT 1
- Unauthenticated or infinite loop HOT 3
- Directly assign a guard to the sanctum
- Vendor publish creates new migration for personal_access_tokens even with already existing table HOT 2
- Issue with Auth ID Returning Incorrect User in Route HOT 1
- auth:sanctum middleware on logout not set user_id field null session HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sanctum.