spring - 在 Spring 中按用户区分的 RequestMapping
问题描述
我有两个处理相同资源的控制器。一个用于常规 Web 应用程序,另一个用于门户(理论上可能有多个门户和多个控制器)。
@Controller
@RequestMapping(value = "/*/web/cases")
public class CasesDetailController extends BaseController<CasesForm> { ... }
@Controller
@RequestMapping(value = "/*/portal/cases")
public class CasesPortalDetailController extends BaseController<CasesForm> { ... }
在某些控制器中,我们只是为门户解析不同的视图,但在某些情况下,控制器逻辑完全不同。例如,这个在门户中有许多在应用程序中不可用的映射。
问题在于为同一资源管理 2 个不同的 url。例如,如果我想为一个案例放置一个链接,我必须通过检查当前用户是否登录到 Web 或门户来在服务器中计算它,而不是放置一个恒定的基本 url 和一个 uuid 作为参数。
我的问题是我是否可以对请求映射做一些事情来决定我可以使用哪个控制器。我能想到的最好的方法是使用一个参数:
@RequestMapping(value = "/*/cases") // Web
@RequestMapping(value = "/*/cases", params = "device=portal") // Portal
但是当我在用户中提供该信息时,我想避免在 url 中发送该信息(我们使用自定义用户类,该类从 spring 扩展基本用户并包含设备)。有没有办法在请求映射中检查?像这样的东西:
@RequestMapping(value = "/*/cases", magicFunctionality=getLoggedUser().getDevice()="web")
可能不存在这样的东西(至少我在手册中没有发现任何东西),但任何关于如何面对这个问题的想法都会受到欢迎。
提前致谢。贡萨洛。
解决方案
推荐阅读
- web-crawler - StormCrawler 如何识别种子 URL?
- ocaml - 解释器和 .ml 文件有什么区别?
- angular - Angular 2+ 中的全局方法
- laravel - 按孙值对子关系进行排序
- codenameone - 在代号中更新到 iOS 12 后添加的图像图标丢失
- python - 如何通过 SWIG 生成的 Python 包装器访问 C 结构中的浮点指针
- google-chrome-extension - 将文件从网页发送到 chrome 扩展
- java - 执行 imagerequest 后显示错误
- node.js - 如何在 Cloud Functions 中读取 Firestore Geopoint 坐标
- javascript - Laravel 5.6 - 选中框时增加数字