c# - 调用请求声明的视图组件仅与控制器中具有 Authorize 属性的视图一起使用
问题描述
我有一个基于 UserClaims 获取当前用户信息的视图组件,如果我在视图中调用此视图组件但此视图的操作不包含 Authorize 属性,则声明结果将为空,但如果我从认为她的行为包含授权属性的观点,声明将不为空,
我需要在主页中调用此视图组件以检查用户是否已登录以显示登录或注销按钮
我的视图组件代码:
public class CurrentUserViewComponent : ViewComponent
{
private readonly IUserRep _rep;
public CurrentUserViewComponent(IUserRep rep)
{
_rep = rep;
}
public async Task<IViewComponentResult> InvokeAsync()
{
var user = User as ClaimsPrincipal;
Claim userClaim = user.FindFirst(ClaimTypes.NameIdentifier);
var currentUser = await _rep.GetItem(int.Parse(userClaim.Value));
return View(currentUser);
}
}
视图视图组件:
@model CI_User
<ul>
@{
if (Model != null)
{
if (Model.IsAdmin)
{
<li>
<a href="@Url.Action("Index", "Home", new { area = "Admin" })" target="_blank"><i class="fa fa-user"></i>@_loc["Admin"]</a>
</li>
}
<li>
<a href="@Url.Action("Index", "Account")"><i class="fa fa-bar-chart-o"></i>@_loc["Account"]</a>
</li>
<li class="exitr">
<a href="@Url.Action("Logout", "Account")"><i class="fa fa-power-off"></i>@_loc["SignOut"]</a>
</li>
}
else
{
<li>
<a href="@Url.Action("Register", "Account")"><i class="fa fa-user"></i>@_loc["Register"]</a>
</li>
<li>
<a href="@Url.Action("Login", "Account", new { ReturnUrl = Context.Request.Path })"><i class="fa fa-lock"></i>@_loc["SignIn"]</a>
</li>
}
}
</ul>
解决方案
推荐阅读
- android - 使用 Firebase 身份验证的正确方法是什么?
- javascript - 循环 JSON 对象并将唯一的 JSON 项分配给给定的变量
- python-3.x - 为什么使用 Gaussian NB 分类器查找测试数据的分数时得到 0.0 的分数?
- gcc - CMAKE 中的 net-snmp 标志
- java - 我的类扩展 OutputStream 的 GZIPOutputStream 问题
- excel - 修剪不同工作表VBA中行和列中的单元格值
- c# - 使用 Selenium 在私有模式下打开 Internet Explorer
- android - 具有动态 applicationId 的 Firebase
- r - 如何将 30 年期间的每日数据转换为多元系列的每月数据?
- java - 接口方法在其他类中不可见