English 中文(简体)
ASP .NET MVC: Redirect to a view if certain condition is not met
原标题:

I finally got to try .NET MVC this weekend and, as was expected, ran into some hurdles.

I am trying to password-protect my site while it s under development. The basic idea is very very simple: in my BaseController class (that inherits from the Controller and is inherited by all other controller classes) I check whether a certain Session variable is set. If it is not set, I need to redirect them to a specific view, where users can enter a password. The key is that this check should happen on every request, regardless of what part of the site they re accessing. This is what I tried but has failed: Override OnActionExecuting in the BaseController class and check for the following:

if ((Session["siteAuth"] == null || (bool)Session["siteAuth"] != true) && 
        filterContext.ActionDescriptor.ActionName != "EnterPassword") {
   RedirectToAction("EnterPassword");
}
else {
   base.OnActionExecuting(filterContext);
}

OnActionExecuting executes on every request, however, RedirectToAction does not happen. Basically it just renders the view that it would otherwise render.

The closest solution that I found was here, but mine needs to happen on every request.

Any hints as to what I m doing wrong?

最佳回答

Why don t you just decorate your action or controller with [Authorize]?

问题回答

You should set filterContext.Result:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.Result = RedirectToAction("EnterPassword");
    }

but as Daniel Liuzzi said, there are other better ways to do it.





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签