gpt4 book ai didi

c# - 有没有办法在 Razor 页面的 CSHTML 中的条件内使用 [Authorize] 属性?

转载 作者:行者123 更新时间:2023-12-05 02:08:21 26 4
gpt4 key购买 nike

我正在开发一个 dotnet core/js 应用程序,其中包括身份验证页面在内的所有前端代码都是使用 JS 框架生成的,其中捆绑的前端被注入(inject)到单个 Razor 页面中。前端从 Controller api 端点访问所有 dotnet 核心逻辑。身份验证使用不记名 token ,并且 [Authorize(role='whatever')] 在多个 Controller 中使用。

出于某种原因,单个 javascript 插件从 razor 页面注入(inject)到应用程序中。我基本上需要这个插件在用户通过身份验证之前不可见。这不是“ secret ”内容的问题,而是插件在用户通过身份验证之前没有用。有没有一种简单的方法可以让我查明用户是否在代码的 CSHTML 中获得授权,就像 Controller 属性一样?我一直在四处寻找,没有发现任何有用的东西。不是 c# 或 dotnet 核心方面的专家(主要从事前端工作),我们将不胜感激最简单的解决方案。不知道我是否遗漏了任何相关信息。如果是这样,请告诉我!

最佳答案

根据您的情况的复杂性,您可以通过几种方式来授权用户。

如果您只是想验证用户是否已通过身份验证,即他们是否已成功登录,而不管用户是谁,那么您可以只检查User.Identity.IsAuthenticated :

@if (User.Identity.IsAuthenticated)
{
<p>User is signed in.</p>
}

如果要验证用户has a specific role ,那么您也可以直接操作 User 主体对象,只检查该特定角色:

@if (User.IsInRole("role-name"))
{
<p>User is in role <em>role-name</em>.</p>
}

否则,如果您想利用 ASP.NET Core 中授权系统的全部功能,您还可以注入(inject) IAuthorizationService 并根据 configured authorization policy 授权用户:

@inject IAuthorizationService _authorizationService

@if ((await _authorizationService.AuthorizeAsync(User, "policy-name")).Succeeded)
{
<p>User was authorized against policy <em>policy-name</em>.</p>
}

关于c# - 有没有办法在 Razor 页面的 CSHTML 中的条件内使用 [Authorize] 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61076880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com