window.onload = `_Layout.cshtml` 中的函数() 无限循环(ASP.NET 核心)
window.onload = function() in `_Layout.cshtml` Infinity loop(ASP.NET Core)
我想检查我的 _layout.cshtml
中的会话,它可以重定向到 Login
页面,但它无限循环
@using Microsoft.AspNetCore.Http
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
window.onload = function () {
if ('@HttpContextAccessor.HttpContext.Session.GetString("username")' === '') {
location.href = "@Url.Action("Login", "Account")";
}
};
</script>
</head>
<body>
</body>
</html>
根据你的描述,我建议你再写一个条件来检查页面是否进入account/login。如下所示:
注意:如果你使用默认身份,url路径应该是/Identity/Account/Login
,所以你应该检查请求路径是不是。此外,我建议您可以直接使用 location.href = "/Identity/Account/Login"
而不是 "@Url.Action("Login", "Account")"
,因为如果帐户控制器不包含登录方法,它将生成错误的 url。这也会导致无限循环。
<script type="text/javascript">
window.onload = function () {
if ('@HttpContextAccessor.HttpContext.Session.GetString("username")' === '' && '@HttpContextAccessor.HttpContext.Request.Path' !== '/Identity/Account/Login')
{
location.href = "/Identity/Account/Login";
}
};
</script>
我想检查我的 _layout.cshtml
中的会话,它可以重定向到 Login
页面,但它无限循环
@using Microsoft.AspNetCore.Http
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
window.onload = function () {
if ('@HttpContextAccessor.HttpContext.Session.GetString("username")' === '') {
location.href = "@Url.Action("Login", "Account")";
}
};
</script>
</head>
<body>
</body>
</html>
根据你的描述,我建议你再写一个条件来检查页面是否进入account/login。如下所示:
注意:如果你使用默认身份,url路径应该是/Identity/Account/Login
,所以你应该检查请求路径是不是。此外,我建议您可以直接使用 location.href = "/Identity/Account/Login"
而不是 "@Url.Action("Login", "Account")"
,因为如果帐户控制器不包含登录方法,它将生成错误的 url。这也会导致无限循环。
<script type="text/javascript">
window.onload = function () {
if ('@HttpContextAccessor.HttpContext.Session.GetString("username")' === '' && '@HttpContextAccessor.HttpContext.Request.Path' !== '/Identity/Account/Login')
{
location.href = "/Identity/Account/Login";
}
};
</script>