MVC 4 überschreiben AuthorizeAttribute nicht funktioniert
Erstellte ich eine grundlegende MVC 4 Projekt. Hinzugefügt den HomeController und Home\Index.cshtml und ContactUs.cshtml.
Add route im Allgemeinen.asax für ContactUs.
Fügen Sie einen Ordner "Auth" und fügen Sie eine Klasse Auth.css in den Auth Ordner.
using System;
using System.Web;
using System.Web.Http;
using System.Net.Http;
namespace MvcApplicationTestProject1
{
public class AuthAttribute : AuthorizeAttribute
{
//public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
//{
// HandleUnauthorizedRequest(actionContext);
//}
protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.Redirect);
response.Headers.Add("Location", "http://www.google.com");
actionContext.Response = response;
}
//MVC 4 Web.Http.AuthorizeAttribute has IsAuthorized function but not AuthorizeCore
protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
return false;
}
}
}
Im HomeController
public class HomeController : Controller
{
//
//GET: /Home/
public ActionResult Index()
{
return View();
}
//
//GET: /Home/
[Auth]
public ActionResult ContactUs()
{
return View();
}
}
Das problem ist, wenn Sie führen Sie den code und besuchen Sie http://localhost:[port Nummer]/Home/ContactUs,
es trifft nicht auf das überschreiben der Klasse AuthAttribute.
Macht den code etwas falsch?
- was wollen Sie erreichen? seine offensichtlich nicht...
- Ich versuche, passen Sie den [Autorisieren], um [Auth] und verwenden Sie es auf cotrollers. Diese bieten Flexibilität für mich zu bauen, meine eigene Authentifizierung anstelle der Verwendung der standard-Mitgliedschaft.
- Dies ist, was ich versuche zu erreichen. Nur diference ist, es ist das MVC 4, aber nicht für MVC3. weblogs.asp.net/jgalloway/archive/2012/05/04/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein Kommentar sagt, dass Sie versuchen zu erreichen, was in dieser Beitrag, und doch ist Sie kopierten code nicht von hier, sondern aus einem vorherigen post SO: Verwenden von benutzerdefinierten Berechtigungen in MVC 4 das bezog sich auf Web-API. In der Lesung, die post, den Sie sehen, der Unterschied liegt in dem, was AuthorizeAttribute, die Sie verwenden. Sie sind mit
System.Web.Http
stattSystem.Web.Mvc
.Wenn Sie den code, den Sie bezeichnet in Ihrem Kommentar, dann würdest du herausfinden, dass es funktionieren würde: