【发布时间】:2021-02-03 22:36:43
【问题描述】:
我想在登录失败时显示错误消息。
这是我的 html 标记:
<form class="modal-content animate" action="/Login/SignInTeacher" method="post">
@Html.AntiForgeryToken()
<div class="imgcontainer">
<span onclick="document.getElementById('id02').style.display='none'" class="close" title="Close Modal">×</span>
<img src="~/images/Login4.png" alt="Avatar" class="img-fluid" style="height: 300px;">
</div>
<div class="container">
<input type="text" class="form-control" name="Email" placeholder="Email Adresiniz" aria-label="Username" aria-describedby="basic-addon1" style="font-size: medium;">
<br>
<input type="password" class="form-control" name="Parola" placeholder="Şifreniz" aria-label="Username" aria-describedby="basic-addon1" style="font-size: medium;">
<br>
<button type="submit" class="btn btn-block btn-outline-success btn-lg">Login</button>
<br>
<label style="font-size: medium; margin-left: 0%;">
<input type="checkbox" checked="checked" name="remember"> Remember me
</label>
</div>
<div class="container" style="background-color:#f1f1f1">
<button type="button" onclick="document.getElementById('id02').style.display='none'" class="btn btn-lg btn-danger">Cancel</button>
<span class="psw">Forgot <a href="/Home/ForgetPassword/">password?</a></span>
</div>
</form>
这是我的控制器代码
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SignInTeacher(Teacher t)
{
SHA1 sha = new SHA1CryptoServiceProvider();
string willbeEncrypted = s.Parola;
string encrypted = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(willbeEncrypted)));
var info = c.Teachers.FirstOrDefault(x => x.Email == s.Email && x.Parola == encrypted);
if (info != null)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name,s.Email)
};
var userIdentity = new ClaimsIdentity(claims, "Login");
ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(userIdentity);
await HttpContext.SignInAsync(claimsPrincipal);
var value = from deger in c.Teachers
where deger.Email == s.Email
select deger.Email;
var nameuser = value;
return RedirectToAction("Main", "Home", new { user = nameuser });
}
return RedirectToAction("Index", "Home");
}
用户登录成功后,主页面打开;当登录失败时,主页不会打开返回相同的页面(刷新),但我无法显示错误消息而不是像这样“用户名或密码错误”的页面刷新。
我用 viewbag 试过了,但是没有用,因为这个命令返回 RedirectToAction("Index", "Home"); 阻止了 viewbag 消息。
【问题讨论】:
-
嗨@Knadre,关于这个案例的任何更新?
标签: asp.net-core asp.net-core-mvc