如何创建用于验证生产密钥的自定义属性

时间:2016-01-12 11:59:18

标签: asp.net-mvc

我正在通过mvc3构建一个Web应用程序。现在我需要创建一个属性,它将放在每个控制器之前,如下所示:

[CustomAttribute]
public class DocinstanceController : Controller
{}

如果密钥错误,此属性用于验证生产密钥并指向预定义的网页。

我的问题是如何创建这样的属性?

由于

1 个答案:

答案 0 :(得分:0)

这是一种简单的方法(根据@Hackerman的建议):

public class CheckKeyAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var keyController = filterContext.Controller as IKeyController;
        if (keyController != null && keyController.Key != "MyKey")
        {
            filterContext.HttpContext.Response.Redirect("NoKey");
        }

    }
}

public interface IKeyController
{
    string Key { get; set; }
}

[CheckKey]
public class HomeController : Controller, IKeyController
{

    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }

    public string Key
    {
        get
        {
            return "MyKey1";
        }
        set
        {

        }
    }
}