{"id":20515675,"url":"https://github.com/vartruexuan/hyperf-http-auth","last_synced_at":"2025-04-14T00:33:04.431Z","repository":{"id":50944862,"uuid":"355098693","full_name":"vartruexuan/hyperf-http-auth","owner":"vartruexuan","description":"hyperf框架http登录授权组件","archived":false,"fork":false,"pushed_at":"2022-10-27T12:33:30.000Z","size":95,"stargazers_count":17,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-04-28T16:21:57.185Z","etag":null,"topics":["auth","http-auth","hyperf"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vartruexuan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-06T07:32:20.000Z","updated_at":"2023-11-28T06:46:08.000Z","dependencies_parsed_at":"2022-08-25T13:01:59.056Z","dependency_job_id":null,"html_url":"https://github.com/vartruexuan/hyperf-http-auth","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vartruexuan%2Fhyperf-http-auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vartruexuan%2Fhyperf-http-auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vartruexuan%2Fhyperf-http-auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vartruexuan%2Fhyperf-http-auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vartruexuan","download_url":"https://codeload.github.com/vartruexuan/hyperf-http-auth/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224846663,"owners_count":17379578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth","http-auth","hyperf"],"created_at":"2024-11-15T21:23:58.615Z","updated_at":"2024-11-15T21:23:59.515Z","avatar_url":"https://github.com/vartruexuan.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hyperf-http-auth\n\n### 安装\n\n```bash\ncomposer require vartruexuan/hyperf-http-auth\n```\n\n### 发布配置文件\n\n```bash\nphp bin/hyperf.php vendor:publish vartruexuan/hyperf-http-auth\n```\n\n### 创建 User model 文件 并且实现接口 IdentityInterface\n\n```php\n\u003c?php\n\nnamespace App\\Model;\n\nuse Vartruexuan\\HyperfHttpAuth\\User\\IdentityInterface;\n\nclass User implements IdentityInterface\n{\n    /**\n     * 获取用户对象\n     *\n     * @param $id\n     *\n     * @return \\App\\Model\\User\n     */\n    public static function findIdentityById($id)\n    {\n        // TODO: Implement findIdentityById() method.\n        return User::query()-\u003efind($id);\n    }\n\n    /**\n     *\n     * @return mixed\n     */\n    public function getId()\n    {\n        // TODO: Implement getId() method.\n        return $this-\u003eid;\n    }\n\n}\n\n```\n\n### 修改配置文件\n\n```php\n\n\u003c?php\n\ndeclare(strict_types=1);\n\nreturn [\n    'default' =\u003e [\n        // 用户权限配置\n        \"user\"=\u003e[\n            'identityClass'=\u003e'App\\Model\\User', // 指定用户model\t\n\t// 目前只支持 HttpHeaderAuth 您也可以自己重构，实现Vartruexuan\\HyperfHttpAuth\\Auth\\AuthInterface 这里指定您自己的类即可\n            'authClass'=\u003e\\Vartruexuan\\HyperfHttpAuth\\Auth\\HttpHeaderAuth::class, // 默认HttpHeaderAuth\n            'expire'=\u003e24*3600, // 过期时长\n        ],\n    ]\n];\n\n```\n\n\n\n### 设置中间件 （这里展示配置方式/路由方式，具体可参考 [hyperf](https://hyperf.wiki/2.1/#/zh-cn/middleware/middleware) 官方文档）\n1.配置方式 config/autoload/middlewares.php\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nreturn [\n    'http' =\u003e [\n        Vartruexuan\\HyperfHttpAuth\\Middleware\\AuthMiddleware::class, // 登录权限\n    ],\n];\n\n```\n2.路由方式\n```php\n\n\u003c?php\n\nuse Hyperf\\HttpServer\\Router\\Router;\n\n// backend\nrouter::addGroup('/backend/', function () {\n    // Index\n    router::addGroup('index/', function () {\n        Router::addRoute(['GET', 'OPTIONS'], 'index', 'App\\Module\\backend\\Controller\\IndexController@index');\n        // 登录\n        Router::addRoute(['POST', 'OPTIONS'], 'login', 'App\\Module\\backend\\Controller\\IndexController@login');\n        // 退出登录\n        Router::addRoute(['POST', 'OPTIONS'], 'logout', 'App\\Module\\backend\\Controller\\IndexController@logout');\n        Router::addRoute(['POST', 'OPTIONS'], 'test', 'App\\Module\\backend\\Controller\\IndexController@test');\n    });\n\n\n}, [\n    'middleware' =\u003e [\n        // 登录权限验证\n      Vartruexuan\\HyperfHttpAuth\\Middleware\\AuthMiddleware::class,\n\n    ]\n]);\n\n```\n### 使用\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Controller;\n\nuse Hyperf\\Di\\Annotation\\Inject;\nuse Vartruexuan\\HyperfHttpAuth\\Annotation\\FreeLogin;\n\n/**\n * Class IndexController\n *\n * @package App\\Controller\n */\nclass IndexController extends BaseController\n{\n\n    /**\n     * @Inject\n     * @var \\App\\Service\\Uc\\UserService\n     */\n    public $userService;\n\n    /**\n     * 登录\n     *\n     * @FreeLogin\n     */\n    public function login()\n    {\n        $username = $this-\u003erequest-\u003epost('username', '');\n        $password = $this-\u003erequest-\u003epost('password', '');\n        if(!$identity=User::validatePassword($username,$password)){\n\t\treturn $this-\u003esendError(\"密码错误\");\n\t}\n        // 授权登录信息\n        $userContainer = AuthHelper::getUserContainer();\n        $userContainer-\u003elogin($identity);\n\n        return $this-\u003esendSuccess([\n            'access_token' =\u003e $userContainer-\u003egetAccessToken()\n        ]);\n    }\n\n    /**\n     * 退出登录\n     *\n     */\n    public function logout()\n    {\n        AuthHelper::getUserContainer()-\u003elogout();\n        return $this-\u003esendSuccess();\n    }\n\n    public function info()\n    {\n        // 获取当前用户对象\n        $user= AuthHelper::getUserContainer()-\u003egetIdentity();\n\n    }\n\n\n\n}\n\n```\n\n### 免登录：目前只支持注解方式FreeLogin（后期加上配置方式），类注解应用于当前控制器, method 注解只应用于当前method\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Controller;\n\nuse Hyperf\\Di\\Annotation\\Inject;\nuse Vartruexuan\\HyperfHttpAuth\\Annotation\\FreeLogin;\n\n/**\n * @Freelogin\n */\nclass IndexController extends BaseController\n{\n\n    /**\n     * 退出登录\n     * @Freelogin\n     */\n    public function list()\n    {\n\n    }\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvartruexuan%2Fhyperf-http-auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvartruexuan%2Fhyperf-http-auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvartruexuan%2Fhyperf-http-auth/lists"}