如果用戶登錄到我的應用程式,我需要知道如何重定向用戶。我的問題有兩個部分:
- 將默認頁面設定為 /Account/Login
- 如果用戶已經登錄(記住我復選框被選中),則重定向到
BookDetails.cs控制器
我已經通過添加以下代碼解決了問題 1 Program.cs:
builder.Services.AddControllersWithViews().AddRazorPagesOptions(options => { options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "")})
我知道如何檢查用戶當前是否已登錄。如果我想檢查用戶當前是否已登錄,BookDetailsController我將在控制器檔案中包含以下代碼:
...
private readonly SignInManager<IdentityUser> _signInManager;
public BookDetailsController(BookClubBookDetailsContext context, SignInManager<IdentityUser> signInManager)
{
_signInManager = signInManager;
_context = context;
}
...
我的問題是我在哪里輸入問題 2 的代碼?如果我放入重定向是一種好習慣/Account/Login,還是應該放入Program.cs?
uj5u.com熱心網友回復:
要在登錄后重定向,只需在 AccountController 中以這種方式更新登錄方法
public async Task<IActionResult> Login(string returnUrl = null)
{
//do sign in
//if success then redirect
if(!string.IsNullOrEmpty(returnUrl))
{
Redirect(returnUrl);
}
}
如果您正在使用頁面,請檢查 /account/login.cshrml.cs
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl ??= Url.Content("~/");
//signIn using SignInManager
if (result.Succeeded)
{
//if redirected from other site
//return Redirect(returnUrl);
//Same site
return LocalRedirect(returnUrl);
}
}
uj5u.com熱心網友回復:
嘗試這個:
public class HomeController : Controller
{
private readonly SignInManager<IdentityUser> _manager;
public HomeController
(
SignInManager<IdentityUser> manager
)
{
_manager = manager;
}
[HttpGet]
[AllowAnonymous]
[Route("")]
[Route("Home")]
[Route("Index")]
[Route("Home/Index")]
public IActionResult Index()
{
if (_manager.IsSignedIn(User))
{
return View("1");
}
else
{
return View("0");
}
}
}
SignInManager 將幫助您確定用戶是否已通過身份驗證。
uj5u.com熱心網友回復:
如果您使用表單身份驗證,您可以在 Web.config 中作為變體執行此操作:
<system.web>
<authentication mode="Forms">
<forms name="sessionVarName" loginUrl="~/Authorization/Login" slidingExpiration="true" path="/" defaultUrl="~/Main/Welcome" protection="None" cookieless="UseCookies"/>
</authentication>
</system.web>
loginUrl:您在 Controller 中的登錄方法。
defaultUrl:地址,用戶登錄成功后會被重定向。
在控制器中使用[Authorize]屬性和方法僅適用于自動化用戶。
然后修改您的 Auth 控制器以設定有效的 Cookie 票證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/456527.html
標籤:asp.net-mvc asp.net 核心 asp.net 身份
上一篇:如何在.NETCoreConsoleApp中實體化ServiceCollection并使用IHttpCientFactory?
