小编Jep*_*sen的帖子

Owin声明 - 添加多个ClaimTypes.Role

我有一个应用程序,可以为用户分配以下角色:

  • 超级管理员
  • 管理员
  • 用户

一个用户可能已经分配了两个或更多个角色,例如.SuperAdmin和用户.我的应用程序使用声明,因此我也希望通过声明来验证用户角色.喜欢:

[Authorize(Roles="Admin")]
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道如何将多个角色添加到我的ClaimTypes.Role.我有以下代码:

var identity = new ClaimsIdentity(new[] {
                new Claim(ClaimTypes.Name, name),
                new Claim(ClaimTypes.Email, email),
                new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin")
        },
            "ApplicationCookie");
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我试图为了说明而添加更多角色,但显然它以错误的方式完成,因此无效.因此,非常感谢任何帮助.

c# asp.net-mvc claims-based-identity

22
推荐指数
2
解决办法
2万
查看次数

React jest 和 MSAL 收到 BrowserAuthError

我正在尝试测试一些使用 MSAL 进行身份验证的组件。

到目前为止,我有一个简单的测试,测试我的组件是否可以渲染,如下所示:

let container;
beforeEach(() => {
    container = render(<NavBar/>)
});
test('Component renders', () => {
    expect(container).not.toBeNull()
})
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我收到以下错误:

BrowserAuthError: crypto_nonexistent: The crypto object or function is not available. Detail:Browser crypto or msCrypto object not available.
  
  at BrowserAuthError.AuthError [as constructor] (node_modules/@azure/msal-browser/dist/index.cjs.js:545:24)
  at new BrowserAuthError (node_modules/@azure/msal-browser/dist/index.cjs.js:7096:28)
  at Function.Object.<anonymous>.BrowserAuthError.createCryptoNotAvailableError (node_modules/@azure/msal-browser/dist/index.cjs.js:7113:16)
  at new BrowserCrypto (node_modules/@azure/msal-browser/dist/index.cjs.js:7413:36)
  at new CryptoOps (node_modules/@azure/msal-browser/dist/index.cjs.js:7782:30)
  at PublicClientApplication.ClientApplication (node_modules/@azure/msal-browser/dist/index.cjs.js:10027:58)
  at new PublicClientApplication (node_modules/@azure/msal-browser/dist/index.cjs.js:11307:23)
Run Code Online (Sandbox Code Playgroud)

我不确定上面的意思,但据我所知,发生此错误是因为会话未经身份验证。

因此,我的问题可以分为以下几个方面:

  • 这个错误是什么意思?
  • 我该如何解决这个错误?(我们是否可以出于测试目的绕过 MSAL?)

javascript reactjs azure-ad-msal

8
推荐指数
1
解决办法
4795
查看次数

在钥匙串中找不到有效的 iOS 代码签名密钥。您需要申请协同设计证书

因此,我构建了一个 Xamarin Forms 应用程序,现在我想在物理 iOS 设备上进行测试。调试器成功运行了我的程序,但不幸的是,当我在物理 iPhone 上部署程序时遇到了问题。

为了部署我的应用程序,我执行了以下操作:

  1. 按照本教程为我的应用程序创建免费配置文件(https://learn.microsoft.com/en-us/xamarin/ios/get-started/installation/device-provisioning/free-provisioning?tabs=windows)(成功运行 xcode 1 view 应用程序,并在手机上安装配置文件)
  2. 将 xamarin 切换为在物理设备上进行调试

包标识符自然匹配,我已执行以下操作来解决该问题:

  • 将 .csproj 中的“CodesignEntitlements”值设置为 null

仍然没有成功。我很好奇为什么 Xamarin 要求提供代码签名密钥,而我仍在调试..

任何帮助深表感谢

xcode xamarin.ios xamarin xamarin.forms

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

选择 * 使用 SQL API 排除 Cosmos DB 中的特定属性

考虑以下情况,我有一个看起来像这样的文档:

"id": 2
"properties": {
    "desired": {
        "Property1": 10,
        "Property2": 1,
        "Property3": 1,
        "$metadata": { 
        ...
        },
        "$version": 53
    }
},
Run Code Online (Sandbox Code Playgroud)

我想从文档中获取所有内容,$metadata除了并且$version明显的解决方案是:

SELECT c["Property1"], c["Property2"] .... FROM c where c["id"] = "2"
Run Code Online (Sandbox Code Playgroud)

但是,我的文档可能会动态扩展,因此上述内容不是最佳的。因此,我认为最好排除$metadata$version。我在 stackoverflow 上查看了不同的“有趣”解决方案,其中一个建议创建一个临时表。

不幸的是,查询需要非常高效,因为我想减少使用的 RU 量。另外,我真的想避免在代码中处理排除。

因此,如何从文档中排除特定的“列”,而不编写过长的查询(可能包括创建临时表)。

sql nosql azure-cosmosdb

7
推荐指数
1
解决办法
2129
查看次数

EF Core 3.1 如何在多对多关系中自动映射

我使用 DB First 方法在 .NET Core 实体框架中构建了一个数据库模型。我的数据库中有几个多对多关系,它们都用一个连接表表示。

就像这样:

public partial class Test1
{
    public Test1()
    {
        Test1_Test2= new HashSet<Test1_Test2>();
    }

    public int Id { get; set; }
    ..

    public virtual ICollection<Test1_Test2> Test1_Test2{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public partial class Test2
{
    public Test2()
    {
        Test1_Test2= new HashSet<Test1_Test2>();
    }

    public int Id { get; set; }
    ..

    public virtual ICollection<Test1_Test2> Test1_Test2{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public partial class Test1_Test2
{
    public int Test1Id{ get; set; }
    public int Test2Id{ get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework asp.net-core

4
推荐指数
1
解决办法
8633
查看次数

基于bindingcontext删除ListView项

我创建了一个从SQLite DB填充的列表视图.XML看起来像这样:

<ListView x:Name="CalculationListview" ItemsSource="{Binding Calculation}" HasUnevenRows="true">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout>
                    <Label Text="{Binding Qty}"></Label>
                    <Label Text="{Binding Note}"></Label>
                    <Button Text="Delete" Clicked="Handle_Clicked"></Button>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个按钮,如果单击该按钮,我想从中删除该项目.

我已经从数据库中删除了一个接收给定对象的方法.

public Task<int> DeleteCalculationAsync(Calculation calculation)
{
    return database.DeleteAsync(calculation);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道如何从bindingcontext中获取对象,以便我可以删除该项目.我显然已经点击了事件处理程序:

void Handle_Clicked(object sender, System.EventArgs e)
{
    App.Database.DeleteCalculationAsync(SOMETHING HERE);
}
Run Code Online (Sandbox Code Playgroud)

c# xaml xamarin xamarin.forms

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

.NET Core EF,何时避免异步数据库调用

我目前正在编写一个简单的 Web 应用程序,它利用 mssql 数据库来存储数据。就像现在一样,我尝试设置我的业务逻辑层,从而以最好的方式构建它。

目前,我所有的调用都是使用 Linq 进行的,实际上它们都不是异步的。我对异步编程还很陌生,并且通常很想知道我应该对哪些查询使用异步调用。

据我所知,使用异步数据库调用是有意义的,因为它可以释放主线程上的内存并且不会阻塞 UI。此外,异步调用可以并发运行,这意味着可以同时完成更多事务。

但是,考虑到我在我的上下文中异步添加多个实体,并使用该SaveChangesAsync()方法来结束我的上下文。AddAsync()在我的上下文中拥有多个方法不是多余的,因为SaveChangesAsync()无论如何都会异步运行所有内容吗?

最后,根据我所阅读和所见,很多人更喜欢使用异步数据库调用。也就是说,与其说是例外,不如说是规则。

如果是这样,在什么情况下我会避免异步数据库调用,在我的业务逻辑层中添加异步调用时我应该遵守哪些一般规则?

c# asynchronous entity-framework linq-to-sql task-parallel-library

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

Button.isHighlighted时如何更改bordercolor

我想知道当我UIButton点击或突出显示时,我是如何在我的边框周围改变不透明度以及文本内部的文本.

我的逻辑告诉我,它应该是这样的......但它似乎不起作用:

    //BTN STYLING

    btnstd.layer.cornerRadius = 5
    btnstd.layer.borderWidth = 1.5
    btnstd.layer.borderColor = UIColor.white.cgColor

    //Change bordercolor when highlighted
    if(btnstd.isHighlighted) {
    btnstd.layer.borderColor = UIColor(white:1,alpha:0.3).cgColor
    }
Run Code Online (Sandbox Code Playgroud)

顺便提一句,这是我的ViewDidLoad()功能

swift

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