html - 如何使登录页面显示在单独的页面上(当前有旁边菜单) ASP.net MVC
问题描述
目前,当我尝试进入登录页面时,它会在开始时显示在单独的页面上(参见预期结果中的图片)。当我单击“注销”或用户未获得授权时,登录页面会显示我的站点菜单。
我还注意到,如果我只是刷新页面,它会进入正确的全页登录屏幕。
我查看了我的 Web.Config,那里的一切看起来都很好:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
我最近更改了所有登录程序,并相信 ReturnUrl 中仍然存在问题,但我似乎找不到问题。我将旧代码与新代码进行了比较,没有看到任何变化。
账户控制人:
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
EnsureLoggedOut();
ViewBag.ReturnUrl = returnUrl;
// Store the originating URL so we can attach it to a form field
var viewModel = new LoginViewModel { ReturnUrl = returnUrl };
return View(viewModel);
}
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
ApplicationUser user = new ApplicationUser();
try
{
user = DBcontext.Users.Where(u => u.Email.Equals(model.Email)).Single(); // where db is ApplicationDbContext instance
}
catch (InvalidOperationException)
{
// the user is not exist
return View("The user does not exist.");
}
var result = await SignInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, shouldLockout: false);
SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
return RedirectToAction("Index", "Home");
}
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
private void EnsureLoggedOut()
{
// If the request is (still) marked as authenticated we send the user to the logout action
if (Request.IsAuthenticated)
LogOff();
}
}
登录视图:
@model LoginViewModel
@{ViewBag.PageId = "extr-page";
ViewBag.PageClass = "animated fadeInDown";}
@section topright{<span id="extr-page-header-space"> <span class="hidden-mobile">Need an account?</span> <a href="@Url.Action("register", "account")" class="btn btn-danger">Create account</a> </span>
}
<div id="content" class="container">
<div class="row">
@{ Html.RenderPartial("_LoginText"); }
<div class="col-xs-12 col-sm-12 col-md-5 col-lg-4">
<div class="well no-padding">
<form action="@Url.Action("Login", "Account")" method="POST" id="login-form" class="smart-form client-form">
<header>
Sign In
</header>
@Html.HiddenFor(m => m.ReturnUrl)
@Html.AntiForgeryToken()
@Html.ValidationBootstrap()
<fieldset>
<section>
<label class="label">E-mail</label>
<label class="input">
<i class="icon-append fa fa-user"></i>
<input type="Email" name="Email" value="demo@email.com">
<b class="tooltip tooltip-top-right"><i class="fa fa-user txt-color-teal"></i> Please enter email address/username</b>
</label>
</section>
<section>
<label class="label">Password</label>
<label class="input">
<i class="icon-append fa fa-lock"></i>
<input type="Password" name="Password" value="demo">
<b class="tooltip tooltip-top-right"><i class="fa fa-lock txt-color-teal"></i> Enter your password</b>
</label>
<div class="note">
<a href="@Url.Action("forgotpassword", "Account")"><i class="fa fa-frown-o"></i> Forgot password?</a>
</div>
</section>
<section>
<label class="checkbox">
<input type="checkbox" name="RememberMe" value="true" checked="checked">
<input type="hidden" name="RememberMe" value="false" />
<i></i>Stay signed in
</label>
</section>
</fieldset>
<footer>
<button type="submit" class="btn btn-primary">
Sign in
</button>
</footer>
</form>
</div>
@{ Html.RenderPartial("_SocialMedia"); }
</div>
</div>
预期结果:(也是第一次访问网站时的结果。)
感谢您提前提供任何帮助。
更新: 这似乎是一个身份验证问题。如果用户通过身份验证,则显示菜单。开始了一个新线程,试图解决这里的身份验证问题。
解决方案
推荐阅读
- azure - 无法从市场向 azure devops 添加扩展
- elasticsearch - 为什么 Elasticsearch 中的 scaled_float 不四舍五入小数位?
- matlab - 如何在Matlab中对带有封闭边界的边缘进行分类?
- hive - 从 Hive Metastore 生成 CREATE TABLE 语句
- visual-studio - 指定要删除的发布配置文件中的文件?
- python - 无法导入 python 模块
- python - 为什么 2- - - -1=3?
- jinja2 - 如何复制旧的 GCE Jinja 部署?
- angular - 如果用户已登录,则在同一路由中路由角度
- ios - 数组不相等,但实际上是?