我正在开发一个ASP.Net Core Web应用程序,我需要为另一个(外部)Web服务创建一种"身份验证代理".
我的身份验证代理的意思是我将通过我的Web应用程序的特定路径接收请求,并且必须检查这些请求的标头以获取我之前发布的身份验证令牌,然后将所有请求重定向到相同的请求字符串/内容到我的应用程序将通过HTTP Basic身份验证进行身份验证的外部Web API.
这是伪代码的整个过程
/extapi
并在HTTP标头中添加auth-token这就是我现在所拥有的.它似乎工作正常,但我想知道它是否真的应该这样做,或者是否有更优雅或更好的解决方案?从长远来看,该解决方案是否会为扩展应用程序带来问题?
[HttpGet]
public async Task GetStatement()
{
//TODO check for token presence and reject if issue
var queryString = Request.QueryString;
var response = await _httpClient.GetAsync(queryString.Value);
var content = await response.Content.ReadAsStringAsync();
Response.StatusCode = (int)response.StatusCode;
Response.ContentType = response.Content.Headers.ContentType.ToString();
Response.ContentLength = response.Content.Headers.ContentLength;
await Response.WriteAsync(content);
}
[HttpPost]
public async Task PostStatement()
{
using (var streamContent = new StreamContent(Request.Body))
{
//TODO check for token presence and reject if issue …
Run Code Online (Sandbox Code Playgroud) 假设我们有一个具有分层架构的应用程序.在视图中我们使用MVC或MVVM.该模型被视为域,它具有很好的业务逻辑部分.
现在让我们假设我们在模型中有一个需要一些时间的方法.例如,必须对对象的每个项目进行复杂的计算或处理.
在UI中,我们希望显示进度条和显示当前计算步骤的文本(例如,包含所有过程历史记录的列表框).
你会怎么做?如何从模型中发送进程进度信息以及如何连接Controller或ViewModel以便更新进度?
我想向使用 Azure AD B2C 以 Asp.Net Core 编写的 Web API 添加授权。我已经有了身份验证部分,现在我想在我的应用程序中添加“角色”,比如“管理员”,并且可能在未来添加更具体的角色。
我已经看到 Azure AD 添加“应用程序角色”的示例,但找不到任何适用于 AD B2C 的内容。Azure 门户中似乎没有任何内容,文档中也没有任何内容。
是否可以将自定义应用程序角色添加到 Azure AD B2C?
我正在尝试将Reactive Extensions(Rx)用于一个看似合适的任务,以特定间隔轮询Web服务并显示其最后的x结果.
我有一个Web服务,它向我发送我想要监视的工具的状态.我想以特定的速率轮询此工具,并在列表中显示已轮询的最后20个状态.
所以我的列表就像是服务结果的"移动窗口".
我正在使用Caliburn.Micro开发一个WPF应用程序,但我不认为这是非常相关的.
我到目前为止得到的是以下内容(只是我快速入侵的示例应用程序,我不打算在真实应用程序中的ShellViewModel中执行此操作):
public class ShellViewModel : Caliburn.Micro.PropertyChangedBase, IShell
{
private ObservableCollection<string> times;
private string currentTime;
public ShellViewModel()
{
times = new ObservableCollection<string>();
Observable
.Interval(TimeSpan.FromSeconds(1))
.SelectMany(x => this.GetCurrentDate().ToObservable())
.ObserveOnDispatcher()
.Subscribe(x =>
{
this.CurrentTime = x;
this.times.Add(x);
});
}
public IEnumerable<string> Times
{
get
{
return this.times;
}
}
public string CurrentTime
{
get
{
return this.currentTime;
}
set
{
this.currentTime = value;
this.NotifyOfPropertyChange(() => this.CurrentTime);
}
}
private async Task<string> GetCurrentDate()
{
var client = new RestClient("http://www.timeapi.org"); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Angular 4应用程序正确地使用Azure AD B2C进行隐式身份验证.我正在使用msal.js尝试让它工作.我已经检查了非常有限的官方示例代码,但它没有实际用途,因为它使用弹出窗口登录,我想进行重定向.
我现在拥有的是我在我的应用程序中注入的以下身份验证服务,该服务应该负责所有身份验证.
import { Injectable } from '@angular/core';
import * as Msal from 'msal';
@Injectable()
export class AuthenticationService {
private tenantConfig = {
tenant: "example.onmicrosoft.com",
clientID: 'redacted (guid of the client),
signUpSignInPolicy: "b2c_1_signup",
b2cScopes: ["https://example.onmicrosoft.com/demo/read", "openid"]
}
private authority = "https://login.microsoftonline.com/tfp/" + this.tenantConfig.tenant + "/" + this.tenantConfig.signUpSignInPolicy;
private clientApplication: Msal.UserAgentApplication;
constructor() {
this.clientApplication = new Msal.UserAgentApplication(this.tenantConfig.clientID, this.authority, this.authCallback);
}
public login(): void {
this.clientApplication.loginRedirect(this.tenantConfig.b2cScopes);
}
public logout(): void {
this.clientApplication.logout();
}
public isOnline(): boolean { …
Run Code Online (Sandbox Code Playgroud) 我有一个Word文档,其中包含大约4000个表单字段,我必须将其导出到数据库.问题是4000个字段中没有一个在"书签"字段中有信息,因此我无法获得存储在其中的信息.
我正在尝试创建一个宏来帮助编写书签(FormField.Name)的过程,但无法设法做到正确.问题是我想要更改用户选择中包含的FormFields的名称,并且只更改它们.我设法找到了这个解决方案:
Sub Macro2()
Dim myFile As String
Dim fnum As Integer
Dim sFileText As String
Dim currentField As FormField
myFile = "c:\testMacro.txt"
fnum = FreeFile()
Open myFile For Input As fnum
For Each currentField In Selection.FormFields
Input #fnum, sFileText
With currentField
.StatusText = sFileText
.OwnStatus = True
End With
currentField.Select
Application.WordBasic.FormFieldOptions Name:=sFileText
Next currentField
End Sub
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为在For Each循环中更改了Selection对象,之后它只包含选择的第一个FormField.
所以这是我的问题,有没有办法保存当前选择并在更改后加载它.
我试过了 :
Dim mySelection as Selection
Set mySelection = Selection
Run Code Online (Sandbox Code Playgroud)
但是如果我改变了Selection,变量mySelection也会改变(这很正常......)而且我没有找到任何克隆对象的方法.
有人知道如何做到这一点?
谢谢
我正在开发一个将部署在许多不同国家的应用程序,这当然意味着不同的语言。
问题是我自己不会翻译它,其他开发人员也不会翻译它。其中一位用户将对其进行翻译,但他将无法访问 Visual Studio。
问题是,如何做到这一点?是否有工具可用于编辑 resx 文件并在应用程序上下文中查看文本?此外,是否可以将翻译文件添加到已编译的应用程序中?
我正在尝试定义REST API,但我遇到了一个问题.我有一个API用户可以执行的操作是相同的,但可以通过两种不同的方式完成.
例如,假设我的用户使用我的API来改变灯光的强度.我会有一个类似的URL
API /光/强度
用户必须更改强度的一个选项是设置为最大亮度的%,另一个选项是将强度设置为精确值,以流明(有一个检测器)并且他可以传递"精度"可以是低,中,高(它会改变达到正确强度所需的时间).
我希望用户能够获得当前的强度,这意味着他在哪种模式下,取决于模式,%或流明的值和精度.
这是我丢失的地方,我的GET将返回一个JSON对象,例如,发送类似的东西是否可以
{
"Mode" = "Percent",
"Percent" = 50.5
}
Run Code Online (Sandbox Code Playgroud)
当我处于"百分比"模式时
{
"Mode" = "Exact",
"Lumens" = 200,
"Precision" = "High"
}
Run Code Online (Sandbox Code Playgroud)
当我处于"流明"模式时?
如果这似乎没问题,我怎么告诉用户他应该解析哪种类型的"对象"?
让用户发送更改的最佳方法是什么?我在考虑有两个URL,每个模式一个,如PUT/api/light/intensity/exact和PUT/api/light/intensity/percent
两者都在等待类似于上面的JSON对象,没有Mode.
有谁知道 ReSharper 9 的插件可以让 ReSharper“理解”Caliburn.Micro 的约定?
例如,ReSharper 抱怨在 ViewModel 中未使用属性或方法,因为它已使用Name=
约定自动绑定。按钮和动作也是如此。
我可以d:DataContext="{d:DesignInstance MyViewModel}
在 Window/UserControl 上设置 ,但这也意味着明确地重写所有绑定,这很烦人并删除了 Caliburn 的一个不错的功能。
我在我的一个类中有一个属性,我试图用 json.net 序列化它,我想“内联”它,这意味着,我不想将该属性嵌套到具有属性名称的元素中,但它的内容直接在其父级中。
这是一个例子,假设我有以下类结构:
public interface ISteeringWheelIdentifier {}
public interface ISteeringWheel
{
ISteeringWheelIdentifier Identifier {get;}
}
public class ManufacturerIdentifier : ISteeringWheelIdentifier
{
public string ManufacturerEmail {get; set;}
}
public class PartNumberIdentifier : ISteeringWheelIdentifier
{
public string PartNumber {get; set;}
}
public class ClassicSteeringWheel : ISteeringWheel
{
public ClassicSteeringWheel(ManufacturerIdentifier identifier)
{
Identifier = identifier;
}
public string HornButtonManufacturer {get; set;}
public ISteeringWheelIdentifier Identifier {get;private set;}
}
public class ModernSteeringWheel : ISteeringWheel
{
public ModernSteeringWheel(PartNumberIdentifier identifier)
{
Identifier = identifier;
}
public …
Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×2
azure-ad-b2c ×2
json ×2
angular ×1
architecture ×1
asp.net ×1
azure ×1
json.net ×1
ms-word ×1
mvvm ×1
resharper ×1
rest ×1
translation ×1
typescript ×1
vba ×1
winforms ×1
word-vba ×1
wpf ×1