在运行时改变路线

Change route during runtime

目前,我们正在研究 HRIS(人力资源信息系统)。我们有不同的用户类型,例如 Admin、HR、Employee。但是用户类型不是静态的。我们希望为每种用户类型设置不同的路由。

例如

https://website/admin/{controller}/{id}

路线将取决于登录系统的用户。将读取其用户类型。

请问有没有办法为每个用户类型配置路由?

这与以下问题非常相似:MVC role-based routing

基本上你使用区域,结合路由约束。

我认为的解决方案是:

  1. 您创建了一个匹配模式的路由(URL 实际上):

    https://website/admin/3
    

    包含此用户的所有逻辑 - 可能是调用模型,请求相应的用户控制器,例如 superadmin,然后重定向到...

  2. 另一个URL匹配

    https://website/admin/superadmin/3
    

    现在有 controller = superadmin 和变量 id = 3。并不是说路由应该不同 - 当 controllerid(整数)或 string 时您可以实现逻辑以保持逻辑更加集中。

  3. 顺便提一下:

    https://website/admin/3
    

    应该没问题-您可以处理来自相应控制器的请求而无需重定向(参见 1. 点)