未经授权时,无效页面有效,但有效页面无效

时间:2019-05-16 19:39:01

标签: c# asp.net-mvc iis

如果用户已登录并进入有效页面,则会按预期方式转到该页面。

如果用户已登录并转到无效页面,则按预期将其转到NotFound.cshtml。

如果用户未登录并进入无效页面(例如http://dev.apphost.mycompany.com/my_app_path/hgfhfhjgfhf),则按预期将其转到Unauthorized.cshtml。

如果用户未登录并进入有效页面,则希望它进入Unauthorized.cshtml。相反,当我在Firefox中尝试时,页面为空白。当我在Chrome中尝试时:

  

找不到此dev.apphost.mycompany.com页面

     

找不到该网址的网页:

     

http://dev.apphost.mycompany.com/my_app_path/

     

HTTP错误404

...为什么?

此外,此行为仅在发布后发生。从本地主机运行时,一切正常。

这是我的ErrorController:

[AllowAnonymous]
public class ErrorController : Controller
{
    private readonly IActiveUserService _activeUserSrv;

    public ErrorController(IActiveUserService activeUserSrv)
    {
        _activeUserSrv = activeUserSrv;
    }

    [Route("error/not-found")]
    public ActionResult NotFound()
    {
        var currUser = _activeUserSrv.GetActiveInternalUser();
        if (currUser == null)
        {
            return View("Unauthorized");
        }
        else
        {
            return View();
        }
    }

    [Route("error/unauthorized")]
    public ActionResult Unauthorized()
    {
        return View();
    }
}

编辑:根据要求,我将包括登录控制器方法。它是从unauthorized.cshtml访问的(因此不被使用,因为我的问题是我无法获取到unauthorized.cshtml)。

[Authorize]
public class AccountController : Controller
{
    private readonly IAccountService _accountService;

    public AccountController(IAccountService srv)
    {
        _accountService = srv;
    }

    [Route("manualLogin")]
    [AllowAnonymous]
    public ActionResult ManualLogin(string username, string password)
    {
        var env = GetEnvFromHost();

        return _accountService.InternalManualLogIn(username, password, env)
            ? (ActionResult)RedirectToAction("Index", "Home")
            : new HttpStatusCodeResult(statusCode: 401);
    }
    ...
}

0 个答案:

没有答案