私の MVC アプリケーションでは、コントローラーは spring IOC をコントローラー ファクトリとして使用して作成されています。ユーザーがブラウザーで URL を編集して間違ったコントローラーを要求している場合、ブラウザーに「リソースが存在しません」というメッセージが表示されます。代わりに、アプリケーションのログイン ページに誘導したいと考えています。
public class ControllerFactory : IControllerFactory
{
private static readonly ILog log =
LogManager.GetLogger(typeof(ControllerFactory));
public IController CreateController(RequestContext requestContext, string controllerName)
{
log.Debug("ControllerFactory.CreateController :controllerName =" + controllerName);
controllerName = controllerName.ToLower();
IApplicationContext ctx = ContextRegistry.GetContext();
Controller ControllerObj = null;
if(ctx.ContainsLocalObject(controllerName))
{
ControllerObj = (Controller)ctx[controllerName];
log.Debug("Controller Object is created :" + controllerName);
}
else
{
//Showing error message
requestContext.HttpContext.Response.Write(String.Format("<br/><b><valign=\"center\"><Font Size=\"6\" Font Color=\"Red\"> The Resource {0} is not available</b>", controllerName));
// **Insteadd of showing the above message I want to direct user to the login page.**
// **"Account/Login"**
log.Error("there is no controller defintion with " + controllerName);
requestContext.HttpContext.Response.End();
}
return ControllerObj;
}
public SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName)
{
return SessionStateBehavior.Default;
}
public void ReleaseController(IController controller)
{
IDisposable disposable = controller as IDisposable;
if (disposable != null)
{
disposable.Dispose();
}
}
}
エラー メッセージを表示する代わりに、ユーザーをログイン ページ ("/Account/Login") にリダイレクトするにはどうすればよいですか?