[AuthenticateUser]
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
[AllowAnonymous]
public ActionResult List()
{
return View();
}
}
如何移除名为List的操作的认证?请建议...
我的自定义过滤器编码如下...我也调用了FilterAttribute,请给予建议。
public class AuthenticateUserAttribute: FilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext context)
{
if (this.IsAnonymousAction(context))
{
}
if (user == "user")
{
// do nothing
}
else
{
context.Result = new HttpUnauthorizedResult(); // mark unauthorized
}
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext context)
{
if (context.Result == null || context.Result is HttpUnauthorizedResult)
{
context.Result = new RedirectToRouteResult("Default",
new System.Web.Routing.RouteValueDictionary{
{"controller", "Home"},
{"action", "List"},
{"returnUrl", context.HttpContext.Request.RawUrl}
});
}
}
}
下面的代码生成错误信息:Error 1:最佳重载方法匹配'MVC5Features.Filters.AuthenticateUserAttribute.IsAnonymousAction(System.Web.Mvc.AuthorizationContext)'的一些无效参数。 c:\ users \ kirupananthan.g \ documents \ visual studio 2013 \ Projects \ MVC5Features \ MVC5Features \ Filters \ AuthenticateUserAttribute.cs 16 17 MVC5Features Error 2:参数1:无法将“System.Web.Mvc.Filters.AuthenticationContext”转换为“System.Web.Mvc.AuthorizationContext”。c:\ users \ kirupananthan.g \ documents \ visual studio 2013 \ Projects \ MVC5Features \ MVC5Features \ Filters \ AuthenticateUserAttribute.cs 16 40 MVC5Features
if (this.IsAnonymousAction(context))
[AllowAnonymous]
可以起作用。 - user2160375IsAnonymousAction
的实现在哪里?此外,在 if 语句体中应该有return
。 - user2160375AuthenticationContext
而不是AuthorizationContext
。 - user2160375