📌  相关文章
📜  .net core 检查用户是否登录 - C# (1)

📅  最后修改于: 2023-12-03 15:29:07.758000             🧑  作者: Mango

.NET Core 检查用户是否登录 - C#

在 .NET Core 中,我们可以使用身份验证和授权机制来管理用户的身份认证和权限控制。 在本文中,我们将讨论如何检查用户是否已登录。

检查用户是否已经认证

我们可以使用 HttpContext 中的 User 属性来检查用户是否已经通过身份验证。 如果用户已经认证,则 User.Identity.IsAuthenticated 属性将返回 true

if (HttpContext.User.Identity.IsAuthenticated)
{
    // 用户已登录
}
else
{
    // 用户未登录
}

为了避免在每个控制器和操作方法中重复编写相同的代码,我们可以创建一个基础控制器并从该控制器继承所有其他控制器。

[Authorize]
public class BaseController : Controller
{
    // ...
}
检查用户是否具有特定的角色或权限

在某些情况下,我们需要检查用户是否具有特定的角色或权限。 在 .NET Core 中,我们可以使用 Authorize 属性指定需要的角色/权限,然后使用 User.IsInRoleUser.HasClaim 方法来检查用户是否具有所需的角色/权限。

[Authorize(Roles = "Admin")]
public IActionResult AdminOnly()
{
    // 只有管理员可以访问
    return View();
}

[Authorize(Policy = "CanEdit")]
public IActionResult Edit(int id)
{
    // 只有具有 CanEdit 权限的用户可以编辑
    return View();
}
if (User.IsInRole("Admin"))
{
    // 用户是管理员
}

if (User.HasClaim(c => c.Type == "CanEdit" && c.Value == "true"))
{
    // 用户具有 CanEdit 权限
}
总结

在 .NET Core 中,检查用户是否已登录或具有特定的角色或权限非常简单。 我们可以使用 HttpContext.User.Identity.IsAuthenticated 属性来检查用户是否已经认证,使用 Authorize 属性指定所需的角色/权限,然后使用 User.IsInRoleUser.HasClaim 方法来检查用户是否具有所需的角色/权限。