2008-11-25 245 views
1

是否有可能像this创造一些我ASP.NET MVC测试版1ASP.NET MVC身份验证

我都试过,但

override bool OnPreAction(string actionName, 
          System.Reflection.MethodInfo methodInfo) 

已经不exsist和

override void OnActionExecuting(ActionExecutingContext filterContext) 

不允许我访问操作名称

回答

5

在您所指的blogpost中,作者s命令

解决此问题的一种方法是使用此帖中显示的基于属性的安全性。但是你必须用安全属性来修饰你的动作,这不是一个好主意。

我认为这是一个非常好的方法去解决它,它是由框架支持。它会给你一个很好的声明性实现。查看System.Web.Mvc中的AuthorizeAttribute。它可以让你做这样的事情:

[Authorize(Roles="Admin, Editor")] 
public ActionResult Delete(int id){ 
    (...) 
} 

由于Delete操作会改变你的系统的状态,我还要补充一个AcceptVerbs属性,像这样:

[AcceptVerbs(HttpVerbs.Post)] 
[Authorize(Roles="Admin, Editor")] 
public ActionResult Delete(int id){ 
    (...) 
} 

这将确保该操作不会接受GET请求。

0

什么是不想与授权属性来装饰你的行为的理由?对不起,但我想我会更好地理解你的情况,如果我想提供比已经给出的更好的答案。

+0

我同意符文,你最终必须把代码放在某个地方...... – MotoWilliams 2008-11-30 06:43:47