How to check if user is authenticated in Razor pages of .Net Core 2.0
I would like to check if a user is logged in in an ASP.NET Core 2.0 application in a Razor page. The following code worked in .NET 4.6.1:
@if (!Request.IsAuthenticated)
{
<p><a href="@Url.Action("Login", "Account")" class="btn btn1-success btn-lg" role="button" area="">Sign In »</a></p>
}
How can I do this in Core 2.0?
Solution 1:
Edit: David is right of course.
Just check if User
or HttpContext.User.Identity.IsAuthenticated
is true
or not.
@if(!User.Identity.IsAuthenticated)
{
...
}
Solution 2:
I've always used this option.
private readonly SignInManager<IdentityUser> _signInManager;
public HomeController(SignInManager<IdentityUser> signInManager)
{
_signInManager = signInManager;
}
public IActionResult Index()
{
if (_signInManager.IsSignedIn(User)) //verify if it's logged
{
return LocalRedirect("~/Page");
}
return View();
}
Hope it helps someone!