我有一个网站xyz.com,用户正在设置管理员帐户,然后他们有其他用户在其下注册。他们将自己的帐户名称称为wisconsinsponsor
。另一个用户设置了另一个名为iowasponsor
的帐户。因此,我希望能够让用户浏览到xyz.com/wisconsinsponsor
和xyz.com/iowasponsor
并进入这些用户设置的相应设置。
然后,在我浏览xyz.com/wisconsinsponsor
之后,我将获得针对wisconsinsponsor的相应设置,我可以将其放到xyz.com/wisconsinsponsor/{controller}/{method}
上。
所以我添加了以下代码。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
List<Sponsor> sponsors = new SponsorContext().Sponsors.ToList();
foreach (Sponsor sponsor in sponsors)
{
// ALL THE PROPERTIES:
// rentalProperties/
routes.MapRoute(
name: sponsor.SponsorName,
url: sponsor.SponsorName + "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = sponsor.SponsorId
}
);
}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
}
所以主要目标是在没有登录的情况下,我可以获得与每个&#34;赞助商有关的信息。然后只是一般信息,如果用户前往&#39; xyz.com&#39;没有指定赞助商。以下是登陆主页的一点,但是当我导航到登录或任何其他视图时,我得到了例如&#39; xyz.com/ [我在数据库中的第一个赞助商条目] / admin / login& #39;而不是&#39; xyz.com/admin/login'。导航为什么不属于默认路由?
答案 0 :(得分:0)
你可以简单地反转网址中的变量。
xyz.com/ {adminAccountVariable} / {控制器} / {方法}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace Example
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "admin",
url: "{id}/RoutingConstraintExample/{action}/",
defaults: new { controller = "RoutingConstraintExample", action = "Index", id = 0 },
constraints: new { id = @"\d+" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = 0 },
constraints: new { id = @"\d+" }
);
}
}
}
我认为应该处理这个问题。
Owin是一种更新的身份验证形式。使用安全性来限制对管理页面的访问。可以使用Owin或其他形式的安全性来识别登录的用户。使用标识的用户来控制管理页面中使用的设置。
http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
http://www.asp.net/vnext/overview/owin-and-katana
使用数据库保存管理员用户配置文件设置。这将用于跟踪与原始问题中显示的adminaccount和admin2account类似的配置文件子类型。 Controller和action将是相同的,但应用程序将根据数据库是否为登录到网站的人员返回adminaccount类型或admin2account类型来了解要显示的视图的哪些部分。