c1164 2022-11-08 18:06 采纳率: 25%
浏览 221

thinkphp6的路由不生效问题

我在尝试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的源码,发现别的作者在处理登录鉴权的问题上,都是使用的中间件。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-08 21:08
    关注
    评论

报告相同问题?

问题事件

  • 修改了问题 11月8日
  • 创建了问题 11月8日

悬赏问题

  • ¥15 P1口接8个发光二极管,利用定时计数器1编写程序
  • ¥20 keil5编译找不到.h文件该如何解决
  • ¥15 安卓EVS如何开启服务正常实现功能
  • ¥15 canal读取mysql时报错
  • ¥15 关于 S7-PLCSIM Advanced 5.0本地TCP连接无法读写数据
  • ¥15 关于温度改变石墨烯介电性能(关键词-介电常数)
  • ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
  • ¥15 druid(相关搜索:数据库|防火墙)
  • ¥15 大一python作业
  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。