请问怎么关闭CI默认的类名+方法名路由规则
本帖最后由 liaow10 于 2016-12-16 21:03 编辑默认情况下,URL可以通过类名+方法名直接调用,比如我有个类名叫game,他有个方法是get($gid)。需求是:我希望只有GET方法,且满足路由规则/game/123才调用我的这个方法,并将123作为参数传递进去。
然后我在routes.php文件里面写了这样的规则:
$route['game/(:num)']['get'] = 'game/get/$1';
接着在game.php的类game里面写这样的函数
public function get($gid)
{
echo "heihei";
echo json_encode($gid);
}
这种方法确实实现了我的需求,符合这个规则的URL可以调用进来。比如:/game/2334
但是!!!不符合这个规则的URL也可以通过CI的默认规则进来:/game/get/hkkk
调进来之后参数$gid='hkkk',而且由于是依靠默认规则进来的,所以不管是get,还是post,put都可以进来。
这种情况除了不符合我的需求之外,个人感觉这样非常不安全,默认方法将一个接口随便暴露出去了,为了这个我得在每个函数里面加入参数验证。
请教各位,这种情况应该怎么解决呢?我在URI路由文档中看到routes不是用来过滤的,那过滤的地方在哪里配置呢?
本帖最后由 liaow10 于 2016-12-19 09:46 编辑
求助!!!
刚刚看到可以使用_remap的方法在类里面定义过滤规则,但是这样的方法比较麻烦,我还是希望能够直接在route里面写路由规则,然后关掉CI默认的那套。
Hex大神呢?
你说的需求 CI 3.X 应该是没有的,这个功能在 CI 4 里是有的。
所以,如果你需要 CI 3.x 有这个功能,就需要自己改改 CI 的源代码。 Hex 发表于 2016-12-19 10:31
你说的需求 CI 3.X 应该是没有的,这个功能在 CI 4 里是有的。
所以,如果你需要 CI 3.x 有这个功能,就需 ...
好的,明白啦!谢谢!
页:
[1]