小编VMh*_*VMh的帖子

asp.net有条件地禁用标记助手(textarea)

我想启用或禁用textarea取决于从模型中评估的条件,我正在使用textarea标记帮助器.换句话说,这样的事情:

<textarea asp-for="Doc" @(Model.MustDisable ? "disabled" : "")></textarea>
Run Code Online (Sandbox Code Playgroud)

但是我得到了以下设计时错误:标签帮助器'textarea'在元素的属性声明区域中不能有C#.

然后我尝试了:

<textarea asp-for="Doc" disabled='@(Model.MustDisable ? "disabled" : "")'></textarea>
Run Code Online (Sandbox Code Playgroud)

它没有显示任何设计时错误但它呈现如下: Model.MustDisable==true渲染disabled='disabled'Model.MustDisable==false渲染disabled.因此,文本区域将始终被禁用.

然后我尝试(删除's):

textarea asp-for="Doc" disabled=@(Model.MustDisable ? "disabled" : "")></textarea>
Run Code Online (Sandbox Code Playgroud)

它没有显示任何设计时间错误,但它呈现与前一个相同.

我怎样才能以正确的方式实施?

razor asp.net-core-mvc tag-helpers

23
推荐指数
3
解决办法
9062
查看次数

Identity Server 4上授权客户端的自定义端点

我希望我的Identity Server 4服务器"MyAdditionalService"为某些已注册的客户端提供附加服务(例如)。他们将通过要在服务器上定义的自定义端点来使用该服务。

我正在考虑为该服务定义一个API(例如,名为“ myAdditionalService”),以便可以根据客户端的配置将对此类服务的访问权限授予客户端。但是,我不确定如何限制对端点的访问(MVC-Action方法),该端点仅允许被允许使用API​​的客户端(可能代表用户)。

我发现自己可以:

services.AddAuthorization(options =>
     {
       options.AddPolicy("MyAdditionalServicePolicy",
           policy => policy.RequireClaim("scope", 
           "myAdditionalService"));
      });
Run Code Online (Sandbox Code Playgroud)

并使用该属性[Authorize("MyAdditionalServicePolicy")]来装饰用于访问此类服务的操作方法。但是,我不知道服务器是否可以同时成为API,或者即使可能也可以。

我该如何实施?令牌服务还扮演着API的角色,这令人困惑,因为它可以保护对操作方法或端点的访问。

谢谢。


更新:

我的Web应用程序是一个IdentityServerWithAspNetIdentity,它已经使用了Asp.net核心身份的身份验证机制。就本例而言,我的Web应用程序向某些注册客户提供的附加服务是用户的Twitter朋友列表(以名为Twitter的控制器为模型,名为ImportFriends的操作),因此api被称为“ TwitterFriends”

根据以下回应的建议,我将Configure()方法修改为具有app.UseJwtBearerAuthentication()。我已经有app.UseIdentity()app.UseIdentityServer()如下图所示:

        app.UseIdentity();
        app.UseIdentityServer();


        app.UseJwtBearerAuthentication(new JwtBearerOptions
        {
            AuthenticationScheme = "Bearer",
            Authority = Configuration["BaseUrl"],
            Audience = "TwitterFriends",
            RequireHttpsMetadata = false                 //TODO: make true, it is false for development only
        });

        // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715
        app.UseGoogleAuthentication(new GoogleOptions
        {
            AuthenticationScheme = "Google",
            SignInScheme …
Run Code Online (Sandbox Code Playgroud)

identityserver4

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

AddScoped()如何在Asp.net核心之外运行?

假设我想在一个作为Azure Web作业运行的控制台应用程序中使用依赖注入.这样做我正在重用我在相关Asp.net应用程序上使用的名为"AddATonOfServices()"的自定义服务注册方法.

我的问题是,使用AddScoped()在"AddATonOfServices()"中注册的服务现在如何在控制台应用程序中运行?他们表现得像Transient或Singleton,或者如何?会有任何意想不到的行为吗?

谢谢.

dependency-injection asp.net-core

2
推荐指数
1
解决办法
886
查看次数