【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
1.需求前台展示文章列表
www.mydomain.com/article/list.do
对于后台文章的管理,需要管理员登陆后才能操作,后台管理文章列表
www.mydomain.com/admin/article/list.do
2.不解
关于文章的操作,都是在UserTypeController中
@Controller
@RequestMapping("/article")
public class ArticleController
但是它只是对应着一个路径映射:"/article"
然而对于文章这一块的控制(现在看到的是文章列表),却有两个路径:
/article/list.do(前台)
/admin/article/list.do(后台)
3.请教
这个问题应该如何处理,请有经验的指导我一下,或许我人在庐山中。谢谢
没看懂你的意思!就我理解你的问题,我简单的说下解决方法。
关于这个问题 :
然而对于文章这一块的控制(现在看到的是文章列表),却有两个路径:
/article/list.do(前台)/admin/article/list.do(后台)
你的意思是,有两个文章列表页请求,一个是网站的,一个是信息管理系统的?如果是这样的话,那么对于你的这种配置
@Controller
@RequestMapping("/article")public class ArticleController
只能映射到 /article/list.do(前台) 这个请求,比如你的 ArticleController 中肯定会有个如下的方法,并且对应的映射为@RequestMapping("/list.do")
@RequestMapping("/list.do")
public String articleList(){
// write code here
}
至于这个请求 /admin/article/list.do(后台) ,肯定是映射不到的!实现这个需求,两种解决办法!
1.你在该ArticleController 控制器中加入类似于上面的代码,并且请求路径上稍微修改一下,比如 /article/admin/list.do(后台),这个是合法的路径。因为你的控制器 ArticleController 上的映射注解为 @RequestMapping("/article") ,也就是说 http://localhost:8080/yourWebapp/article 所有关于 article 的请求都可以映射到该控制器!
2. 如果你一定要用这个路径 /admin/article/list.do(后台),那么就重新写一个控制器,比如
@Controller
@RequestMapping("/ admin ")public class AdminArticleController
同样的,该控制器中有一个类似如下的方法
public String articleList(){
// write code here
}
这样,你就可以用这个/admin/article/list.do(后台)路径了。
引用来自“︶ㄣ荖莮孩ㄜ︵”的答案
没看懂你的意思!就我理解你的问题,我简单的说下解决方法。
关于这个问题 :
然而对于文章这一块的控制(现在看到的是文章列表),却有两个路径:
/article/list.do(前台)/admin/article/list.do(后台)
你的意思是,有两个文章列表页请求,一个是网站的,一个是信息管理系统的?如果是这样的话,那么对于你的这种配置
@Controller
@RequestMapping("/article")public class ArticleController
只能映射到 /article/list.do(前台) 这个请求,比如你的 ArticleController 中肯定会有个如下的方法,并且对应的映射为@RequestMapping("/list.do")
@RequestMapping("/list.do")
public String articleList(){
// write code here
}
至于这个请求 /admin/article/list.do(后台) ,肯定是映射不到的!实现这个需求,两种解决办法!
1.你在该ArticleController 控制器中加入类似于上面的代码,并且请求路径上稍微修改一下,比如 /article/admin/list.do(后台),这个是合法的路径。因为你的控制器 ArticleController 上的映射注解为 @RequestMapping("/article") ,也就是说 http://localhost:8080/yourWebapp/article 所有关于 article 的请求都可以映射到该控制器!
2. 如果你一定要用这个路径 /admin/article/list.do(后台),那么就重新写一个控制器,比如
@Controller
@RequestMapping("/ admin ")public class AdminArticleController
同样的,该控制器中有一个类似如下的方法
public String articleList(){
// write code here
}
这样,你就可以用这个/admin/article/list.do(后台)路径了。
十分感谢你的指导,让我有点眉目了
不过像你说的方案1的话:
那么controller将变成如下:
@Controller
@RequestMapping("/article")
public class ArticleController
//前台文章列表
@RequestMapping("/list.do ")
public String articleList(){
}
//后台文章列表
@RequestMapping("/admin/list.do ")
public String adminList(){
}
这种方案可行
但是我每次将要有个filter判断路径是否有admin来检查是否有session了 ?
"但是我每次将要有个filter判断路径是否有admin来检查是否有session了 ?"
是这样的,因为只要是合法的路径,比如 http://localhost:8080/yourWebapp/article/admin/list.do 就可以请求到
//后台文章列表
@RequestMapping("/admin/list.do ")
public String adminList(){
}
首先得确定一点,你想怎么做?解决一个问题的方法可以有很多中,就看你采取哪种了。
如果你想前后台共用一个控制器,当然也是可以的,也就是说合法的请求都可以请求到这个控制器中。下来就看你的需求是怎么样了,两种情况。1。比如前台文章列表只要访问网站就可以请求该方法,查看文章列表,也就是说这个方法没有任何的限制。2 前台的文章列表还是需要网站的用户登录后才能查看。
无论情况1 还是 情况 2,这个后台文章列表都是需要登录后台管理系统后才能查看的,所以这个方法是有限制的,甚至你的后台管理系统还区分很多角色,而这个文章列表的相关操作也只针对某部分角色的用户才开放,无论怎样,这个方法是需要保护起来的。
那么,你就得在进入方法前做登录判断,或者进入方法时做判断(想想看,后台管理系统的每步操作都需要判断,那你每个方法岂不是都得写if else ,所以这种方式不推荐)。可是我们并不知道某个用户什么时候会请求到这个需要保护的方法,所以,每个来自客户端的请求都需要进行拦截,然后进行相关的逻辑处理,比如登录判断、session 超时判断、是否恶意攻击判断等等...你的系统需要有个 filter 或者 interceptor 进行过滤或者拦截。你可以自己写个简单的过滤器,也可以用开源社区的一些开源的安全框架。还是那句话,看你的需要了。其实,你的这个 检查 session 的需求已经属于 安全部分需要做的工作了,不过再说下去,就超出你的主题讨论范围了。呵!因为安全这块蛮麻烦的,也是蛮有难度的。可以给你推荐一个非常棒的开源安全框架,你可能都知道,Spring Security ,今年的前8个月,我负责着我们系统的安全这块。有问题可以跟我交流。我的邮箱 linlun.happy@gmail.com
引用来自“︶ㄣ荖莮孩ㄜ︵”的答案
"但是我每次将要有个filter判断路径是否有admin来检查是否有session了 ?"
是这样的,因为只要是合法的路径,比如 http://localhost:8080/yourWebapp/article/admin/list.do 就可以请求到
//后台文章列表
@RequestMapping("/admin/list.do ")
public String adminList(){
}
首先得确定一点,你想怎么做?解决一个问题的方法可以有很多中,就看你采取哪种了。
如果你想前后台共用一个控制器,当然也是可以的,也就是说合法的请求都可以请求到这个控制器中。下来就看你的需求是怎么样了,两种情况。1。比如前台文章列表只要访问网站就可以请求该方法,查看文章列表,也就是说这个方法没有任何的限制。2 前台的文章列表还是需要网站的用户登录后才能查看。
无论情况1 还是 情况 2,这个后台文章列表都是需要登录后台管理系统后才能查看的,所以这个方法是有限制的,甚至你的后台管理系统还区分很多角色,而这个文章列表的相关操作也只针对某部分角色的用户才开放,无论怎样,这个方法是需要保护起来的。
那么,你就得在进入方法前做登录判断,或者进入方法时做判断(想想看,后台管理系统的每步操作都需要判断,那你每个方法岂不是都得写if else ,所以这种方式不推荐)。可是我们并不知道某个用户什么时候会请求到这个需要保护的方法,所以,每个来自客户端的请求都需要进行拦截,然后进行相关的逻辑处理,比如登录判断、session 超时判断、是否恶意攻击判断等等...你的系统需要有个 filter 或者 interceptor 进行过滤或者拦截。你可以自己写个简单的过滤器,也可以用开源社区的一些开源的安全框架。还是那句话,看你的需要了。其实,你的这个 检查 session 的需求已经属于 安全部分需要做的工作了,不过再说下去,就超出你的主题讨论范围了。呵!因为安全这块蛮麻烦的,也是蛮有难度的。可以给你推荐一个非常棒的开源安全框架,你可能都知道,Spring Security ,今年的前8个月,我负责着我们系统的安全这块。有问题可以跟我交流。我的邮箱 linlun.happy@gmail.com