我在尝试thinkphp6的路由的时候发现一个问题,在多应用模式下,定义了两个应用,分别是admin和item。在admin中,设置路由,创建了route文件夹,在里面放入了路由文件。
设置了一个简单的路由规则
<?php
use think\facade\Route;
if(!\think\facade\Session::has('admin')){
Route::rule('Index', 'index/login');
}
不用在意判断,这个路由是生效的,我访问/admin/index/中的任何方法都会跳转login,但是如果我只访问/admin,或者/admin/的话,默认访问index控制器,但是路由不生效。
我想要访问/admin的时候,也让路由生效,但不想要强制路由,应该如何实现
试着用apache的重写地址可以解决,但并不是一个挺好的解决办法。我想要的效果是如果判定没有登录,那么就跳转到登录页面,最后选择的方法是用中间件。
看了回答的老哥推荐的文章,那个方法应该也是可以解决的,但是我试了很多次,就是不成功,可能是我不太熟悉app助手函数的原因吧。
总之,请老哥们继续指点一下。另外和遇到同样问题的兄弟说一下,用路由方式来判断是否登录,在单应用的情况下非常好用,但是多应用的情况下,去试一下中间件吧,我下载了几个tp6的源码,发现别的作者在处理登录鉴权的问题上,都是使用的中间件。