【问题标题】:ASP.NET MVC AuthenticateASP.NET MVC 身份验证
【发布时间】:2010-09-24 00:15:04
【问题描述】:
是否可以创建类似this i ASP.NET MVC beta 1 的东西
我试过了,但是
override bool OnPreAction(string actionName,
System.Reflection.MethodInfo methodInfo)
不再存在并且
override void OnActionExecuting(ActionExecutingContext filterContext)
不要让我访问操作名称
【问题讨论】:
标签:
c#
asp.net-mvc
.net-3.5
c#-3.0
【解决方案1】:
在您所指的博文中,作者指出
解决此问题的一种方法是使用本文所示的基于属性的安全性。但是你将不得不用安全属性来装饰你的动作,这不是一个好主意。
我认为这是一个非常好的方法,它得到了框架的支持。它会给你一个很好的声明式实现。查看 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 请求。
【解决方案3】:
不想用授权属性装饰您的操作的原因是什么?抱歉,但如果我要尝试提供比已经给出的答案更好的答案,我想我必须更好地了解你的情况。