小编pis*_*ker的帖子

ASP.NET Core:调用视图组件不尊重授权属性

我实现了 AspNetCore.Authorization 并用[Authorize]. 如果我从浏览器调用控制器,这是可行的。然而,视图组件可以访问数据:

看法:

@foreach (Category category in Model) {
    <a class="btn btn-block
       asp-action="Index"
   asp-controller="Note"
   asp-route-categoryid=@category.CategoryID
   asp-route-page="1">
    @category.Name
</a>
Run Code Online (Sandbox Code Playgroud)

这导致视图组件填充了来自 @category.Name 的数据,而浏览器的地址栏实际上无法访问该数据。

视图组件:

[Authorize]
public class NavigationMenuViewComponent : ViewComponent
{
    private INoteRepository _Repository;
    public NavigationMenuViewComponent(INoteRepository repository)
    {
        _Repository = repository;
    }
    public IViewComponentResult Invoke()
    {
        ViewBag.SelectedCategory = RouteData?.Values["category"];
        return View(_Repository.Categories
            .OrderBy(x => x.Name));
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上我想,Authorize如果没有实际登录,该属性将拒绝来自视图组件的调用。我怎样才能实现这种行为?

c# asp.net-core asp.net-core-viewcomponent

3
推荐指数
1
解决办法
2323
查看次数