我们使用一个IAuthorizationFilter
类来过滤所有请求,并检查身份验证 cookie 中是否仍然存在自定义用户声明(多租户应用程序)。这些信息对于应用程序的其余部分至关重要。如果这些信息不存在,我们将重定向到登录页面。
public class TokenAuthorizationFilter : IAuthorizationFilter, IAsyncAuthorizationFilter
{
public TokenAuthorizationFilter()
{
// Some dependency injection ...
}
public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
{
CheckToken(context);
}
public Task OnAuthorizationAsync(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
{
return CheckToken(context);
}
}
Run Code Online (Sandbox Code Playgroud)
我们像这样注册我们的过滤器
services.AddMvc(config =>
{
config.Filters.Add(typeof(TokenAuthorizationFilter));
});
Run Code Online (Sandbox Code Playgroud)
我想要访问的控制器的操作非常简单:
[Authorize(Policy = "TokenValid")]
public class HomeController : AjaxBaseController
{
public IActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我们甚至没有达到我们的政策AuthorizeAttribute
。正如我在堆栈跟踪中看到的, Identity 在检查 a 后尝试Microsoft.AspNet.Identity.SignInManager
在中间件中的某个位置创建一个CookieAuthenticationOptions
,我假设他正在尝试重新登录用户,但它没有检查我的 Filter ?登录在我们的应用程序中非常特殊,所以我不想让 Identity 自动登录我们的用户。当身份验证 cookie 过期时,我可以重现此问题。有任何想法吗 ?谢谢 !
我需要构建一个ASP.NET Core 2.0 Web API应用程序,该应用程序将能够完成自定义XML输入和输出格式。
我已经成功设置了一个自定义输出格式化程序,但是没有一个自定义输入格式化程序。
更准确地说,这是启动配置:
public void ConfigureServices(IServiceCollection services)
{
services
.AddMvc(opt =>
{
opt.ReturnHttpNotAcceptable = true;
opt.OutputFormatters.Clear();
opt.InputFormatters.Clear();
opt.InputFormatters.Add(new SoapInputFormatter());
opt.OutputFormatters.Add(new SoapOutputFormatter());
});
}
Run Code Online (Sandbox Code Playgroud)
这个想法是具有定制的SOAP输入和输出格式。不,现有的XmlDataContractSerializerInputFormatter
不会。
本SoapOutputFormatter
类:
public class SoapOutputFormatter : IOutputFormatter
{
public bool CanWriteResult(OutputFormatterCanWriteContext context)
{
return true;
}
public async Task WriteAsync(OutputFormatterWriteContext context)
{
var bytes = Encoding.UTF8.GetBytes(context.Object.ToString());
await context.HttpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);
}
}
Run Code Online (Sandbox Code Playgroud)
和SoapInputFormatter
班级:
public class SoapInputFormatter : InputFormatter
{
public override Task<InputFormatterResult> ReadRequestBodyAsync(InputFormatterContext context)
{
throw new …
Run Code Online (Sandbox Code Playgroud) c# asp.net-web-api asp.net-core asp.net-core-2.0 inputformatter
我正在使用Microsoft.ApplicationInsights.AspNetCore(https://www.nuget.org/packages/Microsoft.ApplicationInsights.AspNetCore)。
我通过在Programs.cs和启动类中添加.UseApplicationInsights()来启用应用程序见解:
loggerFactory.AddApplicationInsights(app.ApplicationServices);
Run Code Online (Sandbox Code Playgroud)
一切正常,我可以在应用程序洞察中查看请求,但是当我尝试记录错误时(例如在控制器中):
_logger.LogError("My Error Log");
_logger.LogError("Test", new Exception("Test"));
Run Code Online (Sandbox Code Playgroud)
两者均记录为跟踪事件,而不是应用程序见解中的异常。
我如何使它记录为例外?
我正在尝试使用asp.net Identity Core保护我的webAPI。现在,我想动态创建角色,并在我的管理面板中对其进行设置/删除权限。
例如,我有此权限列表:
现在,我想创建不同的角色,并根据需要为他们设置此权限,并将这些角色分配给每个用户。
我在Identity框架的UserManager和RoleManager中进行了搜索,但是无法创建此功能。
有没有实现此功能的方法?我觉得这很有用,但这是关于dotnet的
以下内容将- /
分隔的URL路径解析为键/值对的字典:
private Dictionary<string, string> ParsePathParameters(string path)
{
var parameters = new Dictionary<string, string>();
if (string.IsNullOrEmpty(path))
{
return parameters;
}
var pathSegments = path.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
for (var i = pathSegments.Length - 1; i >= pathSegments.Length % 2; i -= 2)
{
parameters.Add(pathSegments[i - 1], pathSegments[i]);
}
return parameters;
}
Run Code Online (Sandbox Code Playgroud)
输入格式是[/preamble][/key1/value1][/key2/value2]...[/keyN/valueN]
这样的,例如,给定输入“ / foo / 1 / bar / Thing”或“ / slug / foo / 1 / bar / Thing”,输出将是:
Dictionary<string, string>
{
{ "foo", "1" …
Run Code Online (Sandbox Code Playgroud) I'm currently learning functional programming, and I was wondering if there is a difference between these functions.
Func<int, int> incrementByOne = x => x += 1;
Func<int, int> incrementByOne2 = x => x + 1;
Run Code Online (Sandbox Code Playgroud) 我已经在本教程的帮助下安装了最新版本的Python:https://computingforgeeks.com/how-to-install-python-on-3-on-centos/
“哪个”看到 python3.6 但没有看到 python3.8
[nikolay@nikovm ~]$ which python3.6
/bin/python3.6
[nikolay@nikovm ~]$ which python3.8
/usr/bin/which: no python3.8 in (/home/nikolay/.local/bin:/home/nikolay/bin:/sbin:/bin:/usr/sbin:/usr/bin)
[nikolay@nikovm ~]$ python3.8
bash: python3.8: command not found
[nikolay@nikovm ~]$ python3.6
Python 3.6.8 (default, Nov 21 2019, 19:31:34)
[GCC 8.3.1 20190507 (Red Hat 8.3.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
[nikolay@nikovm ~]$ ls /usr/local/lib
libpython3.8.a pkgconfig python3.6 python3.8
[nikolay@nikovm ~]$
[nikolay@nikovm ~]$ ls /bin/ | grep python
python3
python3.6
python3.6m
unversioned-python
[nikolay@nikovm ~]$ ls …
Run Code Online (Sandbox Code Playgroud) 我有一个 API (asp net core 3.1) 和一个 Web 应用程序 (asp net Blazor WebAssembly)。在我的 API 中,我有一个 CustomerController,其 POST 方法如下:
[HttpPost]
public async
Task<ActionResult>
CreateOrderAsync(OrderDto orderDto)
{
orderDto.IdOrder =
await repository
.CreateOrderAsync(mapper.Map<Order>(orderDto));
return CreatedAtRoute(nameof(GetOrderByIdAsync),
new { idOrder = orderDto.IdOrder }, orderDto);
}
Run Code Online (Sandbox Code Playgroud)
在我的 Web 应用程序中,我有 DataServiceHelper 类,我在 Web 应用程序的实际数据服务中使用它。这里我有POST和GET等方法:
...
static public async Task PostAsync(HttpClient httpClient, string endpoint, T item)
{
await httpClient.PostAsJsonAsync(endpoint, item);
}
static public async Task<T> FindOneByIdAsync(HttpClient httpClient, string endpoint)
{
return await JsonSerializer.DeserializeAsync<T>
(await httpClient.GetStreamAsync(endpoint), new JsonSerializerOptions()
{ …
Run Code Online (Sandbox Code Playgroud) 在我们的 .Net Core 3.1 项目中,我们使用 Serilog 进行日志记录
在我的测试设置中,我创建了一个 ServiceCollection,以便我可以使用服务集合 \ - 提供程序来更新我在测试中使用的类。我有一个同时使用 DbContext 和 Serilog 记录器的存储库。
using Serilog;
using Microsoft.EntityFrameworkCore;
namespace MyApp.Persistency
{
public class MyRepository : IMyRepository
{
private readonly DataContext _dataContext;
private readonly ILogger _logger;
public OpvragenOnbekendeBurgerRegistratieRepository(DataContext dataContext, ILogger logger)
{
_dataContext = dataContext;
_logger = logger;
}
...
}
Run Code Online (Sandbox Code Playgroud)
在我的测试课中:
[TestInitialize]
public void Initialize()
{
var diCollection =
new ServiceCollection()
.AddSingleton(new SqlConnectionOption(_connectionstring))
.AddDbContext<DataContext>(
options =>
{
options.UseSqlServer(_connectionstring);
}
)
...
xxx Add some kind of Serilog registration …
Run Code Online (Sandbox Code Playgroud) 我试图找到一个类似于JCarousel的jQuery carousel插件,但它支持多个宽度的div.JCarousel仅在您具有设定的宽度和高度时才有效.
谢谢.