feat(admin): add middleware annotation for login exemption

- Add MiddlewareAnnotation to CheckLogin middleware for login exemption
- Implement IGNORE_LOGIN constant in MiddlewareAnnotation
- Use MiddlewareAnnotation in Goods controller for login exemption

Signed-off-by: wolfcode <37436228+wolf-leo@users.noreply.github.com>
This commit is contained in:
wolfcode
2025-01-12 18:12:28 +08:00
parent 936cb56c7f
commit 7603cdfa7e
3 changed files with 17 additions and 0 deletions

View File

@@ -7,6 +7,7 @@ use app\Request;
use Closure;
use ReflectionClass;
use ReflectionException;
use app\admin\service\annotation\MiddlewareAnnotation;
class CheckLogin
{
@@ -31,6 +32,13 @@ class CheckLogin
if (in_array($action, $noNeedCheck)) {
return $next($request);
}
$reflectionMethod = new \ReflectionMethod($controllerClass, $action);
$attributes = $reflectionMethod->getAttributes(MiddlewareAnnotation::class);
foreach ($attributes as $attribute) {
$annotation = $attribute->newInstance();
$_ignore = (array)$annotation->ignore;
if (in_array('LOGIN', (array)$_ignore)) return $next($request);
}
if (empty($adminUserInfo)) {
return redirect(__url('login/index'));
}