0

我有一个相当古老的登录系统,这是登录操作的一部分:

// login action
return RedirectToAction("Action", new {
  id = aVal,
  name = aName,
  // other params
});

它将用户重定向到Action操作,我注意到name其他参数最终成为最终 url 方案的一部分。我需要将所有这些值传递给Action.

[HttpGet]
public ActionResult Action(int id, string name, ...) {
  1. 是否可以将它们传递给Action并具有这样的 url: /Controller/Action/123
  2. 我需要将该Action方法限制为仅通过登录操作的人,长 url + 查询字符串使其几乎不可能通过,但是还有另一种更专业的方法来做到这一点。

感谢和问候 SO 和 SE 社区。

4

1 回答 1

1

为了获得 Restful 风格的 url,您需要设置适当的路由。

所以在你的情况下

routes.MapRoute("MyRoute", "MyController/MyAction/{id}/{name}", new { controller = "MyController", action = "MyAction" });

你可以在这里看到一些其他的例子

您问题的第二部分更加模糊 - 您可能希望使用 [Authorize] 属性标记您的类,然后覆盖 OnAuthorization ,您可以在其中进行任何检查。不确定这是否是您正在寻找的。

这里有一个例子

于 2012-09-06T22:33:50.027 回答