Asp.net mvc 是否有一种扩展.NETMVC应用程序的简单方法';新项目的路线是什么?

Asp.net mvc 是否有一种扩展.NETMVC应用程序的简单方法';新项目的路线是什么?,asp.net-mvc,Asp.net Mvc,我有一个主要使用SAMLv2 SSO身份验证系统的web应用程序。其中一个要求是认证系统需要在应用程序中模块化,因此(例如)我们可以在以后交换LDAP认证模块 不过,我需要为断言消费服务(ACS)映射一个路由,该服务在逻辑上属于SAML SSO模块,而不是功能应用程序。(或者对于LDAP模块,我们需要登录表单的路由) 我从未在解决方案中看到任何注册来自其他项目的路由的例子,而且我似乎也找不到来自谷歌的任何结果。有没有一个简单的方法可以做到这一点?你认为我在这里完全走错方向了吗?你可以简单地为SA

我有一个主要使用SAMLv2 SSO身份验证系统的web应用程序。其中一个要求是认证系统需要在应用程序中模块化,因此(例如)我们可以在以后交换LDAP认证模块

不过,我需要为断言消费服务(ACS)映射一个路由,该服务在逻辑上属于SAML SSO模块,而不是功能应用程序。(或者对于LDAP模块,我们需要登录表单的路由)


我从未在解决方案中看到任何注册来自其他项目的路由的例子,而且我似乎也找不到来自谷歌的任何结果。有没有一个简单的方法可以做到这一点?你认为我在这里完全走错方向了吗?

你可以简单地为SAML/LDAP创建一个新区域,比如为MVC项目创建一个
/SAML
/LDAP
或一个通用的
/auth
(使用LDAP和SAML控制器),这将你的应用程序级代码和auth级代码分开,但您保留相同的解决方案/项目文件

因此,您将拥有正常的MVC路线:

public ClientController : Controller
{
    // Url: /client/index
    public ActionResult Index()
    {
    }
}
以及您的身份验证路径:

// Inside the 'Auth' area
public SAMLController : Controller
{
    // Url: /auth/saml/dosomething/1234
    public ActionResult DoSomething(string id)
    {
    }
}
public LDAPController : Controller
{
    // Url: /auth/ldap/dosomething/1234
    public ActionResult DoSomething(string id)
    {
    }
}
有关在MVC中使用区域的快速演练:


我考虑过使用区域,我可能最终会这样做,但这不允许在其他项目中重用我的SAML auth组件。我很难权衡利益,但我的直觉告诉我,这是实现这一目标的方法。另一个缺点是,因为我一次只能使用一种身份验证机制,所以我肯定会有死代码\问题是,如果你走这条路,你将不得不最终抽象身份验证机制以支持LDAP和SAML,然后他们会希望你使用OpenID,并且必须一次又一次地重新抽象所有内容。由于auth-to-auth方案与auth-to-auth方案大不相同,因此最好将它们隔离,以便所有与这些方案通信的代码都被分组,并且不会在任何其他地方泄漏任何内容,这便于在发生变化时进行测试和交换。以国际奥委会为例,有些人试图将它们抽象出来,以便能够在一个或另一个之间进行交换,但最终,90%的时间都是无用的。