您好,我正在寻找解决此问题的解决方案。我正在使用Asp.net mvc3构建一个Web应用程序。 我想创建一个自定义动作过滤器([KeyAuthorization]),以便只有授权的密钥才能访问控制器。
这是我的默认路线
routes.MapRoute(
"Default", // Route name
"{guid}/{controller}/{action}", // URL with parameters
new { guid = UrlParameter.Optional, controller = "Home", action = "Index", }
所以,请说有人访问 www.example.com/34safd-234s/home/index
如果密钥:34safd-234s正确(授权),则用户将看到内容,否则网络应用将抛出404.
如何实现这一目标?
谢谢,
如何构建和操作过滤器,检查
中是否存在guid参数答案 0 :(得分:2)
您可以通过创建ActionFilterAttribute
来实现。这应该让你朝着正确的方向前进。您需要在评论时进行验证。
public class KeyAuthorizationAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
var guidValue = filterContext.RouteData.Values["guid"];
if (guidValue != null) {
Guid guid = new Guid(guidValue.ToString());
bool notValid = true;
//do validation
//set notValid = false if authorization passes
if (notValid) {
filterContext.Result = new HttpNotFoundResult();
}
}
}
}
然后,您可以将此操作应用于您的操作。
[KeyAuthorization]
public ActionResult Index() {
}