如何使用Hyperf框架进行权限认证

来源:undefined 2024-12-17 00:59:04 1009

如何使用Hyperf框架进行权限认证

引言:

在一个Web应用程序中,权限认证是一项非常重要的功能。通过权限认证,我们可以限制某些用户只能访问特定的资源和功能,保护敏感数据不被未授权的用户访问。本文将介绍如何使用Hyperf框架进行权限认证,并且给出具体的代码示例。

一、配置权限表和角色表

在开始使用Hyperf框架进行权限认证之前,我们需要先配置权限表和角色表。打开项目中的.env文件,添加以下配置:

1

2

3

4

5

# 权限表

PERMISSION_TABLE=admin_permissions

# 角色表

ROLE_TABLE=admin_roles

登录后复制

然后在数据库中创建对应的表格。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

<?php declare(strict_types=1);

namespace AppMiddleware;

use HyperfHttpServerContractRequestInterface;

use HyperfHttpServerContractResponseInterface;

use HyperfHttpServerRouterDispatched;

use PsrContainerContainerInterface;

use HyperfLoggerLoggerFactory;

use HyperfCircuitBreakerAnnotationCircuitBreaker;

class AuthMiddleware

{

private $container;

private $logger;

public function __construct(ContainerInterface $container, LoggerFactory $loggerFactory)

{

$this->container = $container;

$this-&gt;logger = $loggerFactory-&gt;get(auth);

}

/**

* @param RequestInterface $request

* @param ResponseInterface $response

* @param callable $next

* @return ResponseInterface

*/

public function process(RequestInterface $request, callable $next): ResponseInterface

{

// 获取当前请求的控制器和方法

$dispatched = $this-&gt;container-&gt;get(Dispatched::class);

$controller = $dispatched-&gt;handler-&gt;callback[0];

$action = $dispatched-&gt;handler-&gt;callback[1];

// 进行权限认证

$isAuth = $this-&gt;checkPermission($controller, $action);

if (!$isAuth) {

// 权限不足,返回错误提示

return $response-&gt;json([code =&gt; 403, message =&gt; Permission Denied]);

}

// 继续执行下一个中间件

return $next($request);

}

/**

* @param $controller

* @param $action

* @return bool

*/

protected function checkPermission($controller, $action): bool

{

// 根据控制器和方法查询需要的权限,校验用户是否拥有该权限

// 省略代码,根据具体业务逻辑进行处理

return true; // 此处返回true表示权限校验通过

}

}

登录后复制

三、注册中间件

打开config/autoload/middlewares.php文件,添加以下配置:

1

2

3

4

5

6

7

<?php declare(strict_types=1);

return [

// ...

auth => AppMiddlewareAuthMiddleware::class,

];

登录后复制

四、使用中间件

在路由配置中,我们可以使用中间件来进行权限认证。例如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

<?php declare(strict_types=1);

use HyperfHttpServerRouterRouter;

// 不需要登录的接口

Router::group([

middleware => [],

], function () {

// ...

});

// 需要登录但是不需要认证权限的接口

Router::group([

middleware =&gt; [

AppMiddlewareAuthMiddleware::class,

],

], function () {

// ...

});

// 需要认证权限的接口

Router::group([

middleware =&gt; [

AppMiddlewareAuthMiddleware::class,

],

], function () {

// ...

});

登录后复制

总结:

使用Hyperf框架进行权限认证非常简单。我们只需要定义一个AuthMiddleware中间件,然后在路由配置中使用即可。当请求到达该中间件时,会执行我们自定义的权限认证逻辑。如果权限校验不通过,可以返回相应的错误提示。通过这种方式,我们可以轻松地实现权限控制的功能。

参考链接:

Hyperf官方文档:https://hyperf.wiki/2.2/#/zh-cn/middleware/middleware?id=中间件注册

以上就是如何使用Hyperf框架进行权限认证的详细内容,更多请关注php中文网其它相关文章!

最新文章