使用SignInManager來控制用戶的登錄、注銷等動作;
其中登錄功能正常,在使用SignOutAsync注銷用戶時一直無效,但又沒有任何例外拋出,請大神幫忙看下,代碼如下:
/// <summary>
/// 登錄
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost, Route("Account/Login")]
public JsonResult LoginAsync(LoginModel model)
{
BaseResult result = new BaseResult();
var signInResult = Login(model.UserName, model.Password, model.RemenberMe);
if (signInResult.IsNotAllowed)//賬號未啟用
{
result.ResultCode = Resources.Tips.LoginTips.SignInUserNotAllowedCode;
result.ResultMsg = Resources.Tips.LoginTips.SignInUserNotAllowedMsg;
}
else if (signInResult.IsLockedOut)//賬號被鎖定
{
result.ResultCode = Resources.Tips.LoginTips.SignInUserLockedCode;
result.ResultMsg = Resources.Tips.LoginTips.SignInUserLockedMsg;
}
else if (!signInResult.Succeeded)
{
result.ResultCode = Resources.Tips.LoginTips.SignInPasswordOrUserNameErrorCode;
result.ResultMsg = Resources.Tips.LoginTips.SignInPasswordOrUserNameErrorMsg;
}
if(result.ResultCode == CommonTips.CommonObjectSuccessCode)
{
LogService.WriteLog(model.UserName, ValueHelper.NowTime + ",IP:" + HttpContext.GetClientUserIp(), "成功", "登錄", "賬戶管理");
}
else
{
LogService.WriteLog(model.UserName, ValueHelper.NowTime + ",IP:" + HttpContext.GetClientUserIp() + result.ResultMsg, "失敗", "登錄", "賬戶管理");
}
return Json(result);
}
// <summary>
/// 注銷
/// </summary>
[Route("Account/Logout")]
public IActionResult LogoutAsync()
{
string userId = HttpContext.GetUserId();
Logout();
LogService.WriteLog(userId, ValueHelper.NowTime + ",IP:" + HttpContext.GetClientUserIp(), "成功", "注銷", "賬戶管理");
return RedirectToAction("Index");
}
/// <summary>
/// 登錄
/// </summary>
/// <param name="username"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public SignInResult Login(string username, string pwd, bool remenberMe)
{
return SignInManager.PasswordSignInAsync(username, pwd, remenberMe, false).Result;
}
/// <summary>
/// 注銷
/// </summary>
/// <returns></returns>
public async void Logout()
{
await SignInManager.SignOutAsync();
}
uj5u.com熱心網友回復:
問題可能出現在重定向上....uj5u.com熱心網友回復:
你退出代碼中加的日志是否正常輸出了?如果輸出了,說明注銷代碼執行了uj5u.com熱心網友回復:
identity中退出是需要在form表單中的,它是需要Token驗證的。Views頁面:
<form asp-area="" asp-controller="Account" asp-action="Logout" method="post" id="logoutForm">
<div class="yr-manage-top-nav">
<ul>
<li>您好!@getUser.ChineseName</li>
<li><button type="submit" class="btn btn-manage-nav btn-lockout">退出系統</button></li>
</ul>
</div>
Controllers中AccountController.cs
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Logout()
{
await _signInManager.SignOutAsync();
_logger.LogInformation("User logged out.");
return RedirectToAction(nameof(HomeController.Index), "Home");
}
uj5u.com熱心網友回復:
注銷await Request.HttpContext.SignOutAsync();
return RedirectToAction("Login");
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/38143.html
標籤:ASP.NET
上一篇:FastReport 問題
