ken\trade
发布日期:2021-11-17 11:50:25 浏览次数:2 分类:技术文章

本文共 3148 字,大约阅读时间需要 10 分钟。

['ktrade'], * 'modules' => [ * 'ktrade' => [ * 'class' => 'ken\trade\Module', * 'allowedIPs' => ['127.0.0.1', '192.168.*.*'], * ], * ], * ] * ~~~ * * 默认时此模块仅允许在 localhost 上进行访问,也可以通过配置 * [[allowedIPs]] 属性来让其它机器访问. * * 访问地址: `http://localhost/path/to/index.php?r=gii` * * 如果启用url 美化功能 [[\yii\web\UrlManager::enablePrettyUrl|pretty URLs]], * 则访问地址为: `http://localhost/path/to/index.php/gii` * * @author Xiaohan Xu
* @since 2.0 */class Module extends \yii\base\Module implements BootstrapInterface{ /** * @inheritdoc */ public $controllerNamespace = 'ken\trade\controllers'; /** * @var array * * 默认只允许 localhost 访问. * 也可以设置 外网机器访问,例如 ['127.0.0.1', '192.168.*.*'] */ public $allowedIPs = ['127.0.0.1', '::1']; public $allowedHosts = []; /** * @var string 交易日志的目录 */ public $logPath = '@runtime/ktrade'; /** * @var array 对外访问的api列表 */ public $apis = []; /** * @inheritdoc */ public function init() { parent::init(); $this->logPath = Yii::getAlias($this->logPath); } /** * @inheritdoc */ public function bootstrap($app) { $app->getUrlManager()->addRules([ $this->id => $this->id, $this->id . '/
/
' => $this->id . '/
/
', ], false); } /** * @inheritdoc */ public function beforeAction($action) { if (!parent::beforeAction($action)) { return false; } if (Yii::$app instanceof \yii\web\Application && !$this->checkAccess()) { throw new ForbiddenHttpException('You are not allowed to access this page.'); } foreach (array_merge($this->coreApis(), $this->apis) as $id => $config) { $this->apis[$id] = Yii::createObject($config); } $this->resetGlobalSettings(); return true; } /** * Resets potentially incompatible global settings done in app config. */ protected function resetGlobalSettings() { if (Yii::$app instanceof \yii\web\Application) { Yii::$app->assetManager->bundles = []; } } /** * @return boolean whether the module can be accessed by the current user */ protected function checkAccess() { $ip = Yii::$app->getRequest()->getUserIP(); foreach ($this->allowedIPs as $filter) { if ($filter === '*' || $filter === $ip || (($pos = strpos($filter, '*')) !== false && !strncmp($ip, $filter, $pos))) { return true; } } foreach ($this->allowedHosts as $hostname) { $filter = gethostbyname($hostname); if ($filter === $ip) { return true; } } Yii::warning('拒绝访问 kentrade. 请求的 IP 是 ' . $ip, __METHOD__); return false; } /** * 返回 交易模块提供的对外api接口 * @return array * * * */ protected function coreApis() { return [ 'pay' => ['class' => 'ken\trade\apis'], 'pay' => ['class' => 'ken\trade\apis'], ]; }}

转载地址:https://blog.csdn.net/vb2005xu/article/details/52539651 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:常用的 js 代码梳理
下一篇:我承认我手贱: 升级 xcode

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月21日 19时06分00秒