对于我们的网络应用,我想让开发人员使用我们的api创建帐户,当创建帐户时,URI有一个子域。要做到这一点,我必须有两个单独的API,因为URL是不同的。
对于帐户创建:api.example.com/v1
对于帐户使用:subdomain.example.com/api/v1 /
我们正在使用.net mvc3,这可以通过一组api和路由来完成吗?
答案 0 :(得分:0)
您应该像往常一样设置路由以进入相关的控制器+操作,并在操作内部(或更好 - 使用ActionFilter),检查子域并设置确定用户身份的相应代码,进一步处理。
过滤器的示例如下:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class SubdomainFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int? userID = null;
Uri uri = filterContext.HttpContext.Request.Url;
if (uri != null)
{
string domain = uri.Host;
// do whatever you need analyzing the 'domain' variable... like getting the user id according to the subdomain. Let's say we discoveered that the user id is 1.
userID = 1;
}
if (filterContext.ActionParameters.ContainsKey("Subdomain"))
filterContext.ActionParameters["SubdomainUser"] = userID;
base.OnActionExecuting(filterContext);
}
}
然后你的行动将是:
[SubdomainFilter]
public virtual ActionResult GetUserName(int? userID)
{
...
}