小编Ben*_*iFB的帖子

自定义ASP.NET身份(OWIN)使用Entity Framework的详细信息

这个博客:

http://blogs.msdn.com/b/webdev/archive/2013/06/27/introducing-asp-net-identity-membership-system-for-asp-net-applications.aspx

关于ASP.NET身份提供者状态:

持久控制

默认情况下,ASP.NET Identity系统会将所有用户信息存储在数据库中.ASP.NET Identity使用Entity Framework Code First来实现其所有持久性机制.

如果您的应用程序要求是此信息可能存储在不同的存储机制中,例如SharePoint,Azure表服务,无Sql数据库等,则现在可以插入不同的存储提供程序.

但是如何使用Azure表服务呢?我的研究表明你不能将实体框架与表服务一起使用,所以我认为你必须完全替换使用实体框架的代码,但我不确定.

相关问题:我是EF的新手.我们如何定制数据的存储方式(即使在SQL服务器中)?我发现了两个显示向用户表添加额外字段的示例:

http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

http://www.asp.net/web-api/overview/security/external-authentication-services

但我不清楚究竟发生了什么.我认为它首先使用实体​​框架代码,但我看到很少有关于如何自定义EF为此存储数据的文档.例如,我可以重命名实体吗?我可以定义数据库的名称吗?

谢谢...

-ben

entity-framework azure azure-table-storage owin asp.net-identity

6
推荐指数
1
解决办法
7232
查看次数

Javascript:向数组中的所有对象添加方法

想象一下以下代码:

$.get( "ajax/getColorData.php", function( data ) {
  this.colorData = data;
});
Run Code Online (Sandbox Code Playgroud)

现在设想'数据'的价值是:

this.colorData = [
    {
        colorName: 'Red',
        colorIsInRainbow:true
    },
    {
        colorName: 'Orange',
        colorIsInRainbow: true
    },
    {
        colorName: 'Magenta',
        colorIsInRainbow: false
    }
];
Run Code Online (Sandbox Code Playgroud)

问题1

现在,在我下载数据之后,假设我想为数组中的每个条目添加一个方法"colorStartsWithR".我"想"而不是在数组的每个成员上定义它,我可以在原型上以某种方式定义这个方法.但是,我不确定我能做到这一点,因为这些对象不是由我创建的,而是由$ .get返回的,所以我不清楚我是否正在思考正确的方向.

问题2

更进一步,如果我想为数组的每个成员添加一个属性,具体如下:

    {
        colorName: 'Magenta',
        colorIsInRainbow: false,
        userClickedThisColor:ko.observable()
    }
Run Code Online (Sandbox Code Playgroud)

这样,我可以绑定(通过knockoutjs)列表并包含一个复选框.在这种情况下,我质疑原型是否会派上用场,因为每个成员都应该获得自己的ko.observable属性.一个快速的本能是做一些事情:

for (var i=0;i<this.colorData.length;i++)
{
 this.colorData[i].userClickedThisColor=ko.observable()
}
Run Code Online (Sandbox Code Playgroud)

并且工作正常,但想象一下,有多种方法可以检索颜色列表,或者用户可以创建新的颜色实例,并且我在上面做的自定义更复杂.我现在需要复制上面的"附加"逻辑.有更聪明的方法吗?

我把大部分时间花在强类型语言上,有时这些事情对我来说并不那么明显.谢谢你的任何建议......

-ben

javascript arrays function-prototypes function-constructor

6
推荐指数
1
解决办法
2436
查看次数

将id类型从string更改为int时,如何在Web API中获取当前在用户中签名的id?

使用ASP.NET Web API和ASP.NET Identity 1.0,您可以使用此扩展方法来检索当前登录的用户:

var id = Microsoft.AspNet.Identity.IdentityExtensions.GetUserId(User.Identity);
Run Code Online (Sandbox Code Playgroud)

但是在ASP.NET identity 2.0 alpha中,您可以覆盖ID字段的类型.Microsoft提供的示例显示将此字段设置为int.但是这个扩展方法似乎是硬编码的,甚至在alpha中返回一个字符串:

http://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.identityextensions.getuserid(v=vs.111).aspx

在使用ASP.NET Identity 2.0 alpha时,如何从Web API控制器中检索当前登录用户的(int)标识?

asp.net-mvc asp.net-web-api asp.net-identity

6
推荐指数
2
解决办法
1845
查看次数

将Webpack构建与ASP.NET Core 3.0集成的最佳方法?

我正在将我的ASP.NET Core应用程序升级到V3,并使用Visual Studio 2019进行开发/调试。除此之外,整个过程很顺利:

public void Configure(…..
                app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
                {
                    HotModuleReplacement = false,
                    ReactHotModuleReplacement = false
                });
Run Code Online (Sandbox Code Playgroud)

UseWebpackDevMiddleware不再是:https : //github.com/aspnet/AspNetCore/issues/12890

我现在希望了解每次调试时VS运行webpack的最佳方法,最好是仅在已更改的JS代码上运行。这就是我从中获得的价值UseWebpackDevMiddleware。我的应用程序是React应用程序,如果您的应用程序是从CreateReactApp启动的,那么似乎有一些新的替代品,但我的不是。(我相信以此为出发点但然后分开的应用程序称为“弹出”。)即使我的应用程序未使用CreateReactApp,我仍然可以以某种方式利用该功能吗?另外,在启动新的React应用程序之后,CreateReactApp的作用是什么?我以为它只会在一开始就被用于膨胀模板代码。

在所有这些中,Microsoft.AspNetCore.SpaServices.Extensions扮演什么角色?

我不需要热模块更换;我不需要服务器端预渲染。我实际上只是在尝试了解如何在调试过程中通过Webpack透明地构建JS。我可以将其连接到MSBuild吗?我想象其他人在升级时会面临同样的问题。

感谢您的任何建议。

msbuild reactjs webpack asp.net-core asp.net-core-3.0

6
推荐指数
3
解决办法
1114
查看次数

NuGet:是否需要引用隐式依赖项?

我最近从 ASP.NET Core 2.2 升级。到 3.0。随着关于他们的元包的变化,我现在处于一切正常的状态,但没有明确引用一些非常重要的包。一切正常,因为它们被隐式引用。例如:

在此处输入图片说明

您可以看到我明确引用了 Microsoft.EntityFrameworkCore.SqlServer,但是我没有明确引用 Microsoft.EntityFrameworkCore。它仍然被拉进来,因为它似乎是一个间接引用。

我的问题是:这是一个合理的项目配置吗?明确地拉入 Microsoft.EntityFrameworkCore 有什么好处吗?我想可能会对版本升级产生影响。

谢谢...

.net nuget nuget-package .net-core-3.0

6
推荐指数
1
解决办法
1190
查看次数

ASP.NET Core React 模板 v3.15:没有 IdentityServer 也安全?

最近的某个时候,Microsoft 开始在 ASP.NET Core React 模板(在 Identity Core 之上)中包含 IdentityServer 功能。我试图清楚地理解这种差异的含义。因此,我从附在此处的模板开始:

https://drive.google.com/file/d/1GV4UNhsPp_PdPk2RKjoz0490Vn9A6geY/view?usp=sharing

并做了一些事情:

- 搭建所有身份资产

-注释掉startup.cs中的以下几行:

(在配置服务中)

        //services.AddIdentityServer()
        //    .AddApiAuthorization<ApplicationUser, ApplicationDbContext>();

        services.AddAuthentication();
            //.AddIdentityServerJwt();
Run Code Online (Sandbox Code Playgroud)

(在配置中)

        //app.UseIdentityServer();
Run Code Online (Sandbox Code Playgroud)

在客户端,我删除了一些代码,并在 FetchData.js 中进行了此更改:

  async populateWeatherData() {
    //const token = await authService.getAccessToken();
    const response = await fetch('weatherforecast', {
        //headers: !token ? {} : { 'Authorization': `Bearer ${token}` },
        credentials: 'same-origin',
    });
    const data = await response.json();
    this.setState({ forecasts: data, loading: false });
  }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,登录后,我们将拥有一个包含登录信息的 cookie,并使用凭证:'same-origin' 导致将其发送到受保护的 API 端点。

这对我来说有效并且似乎很安全。去测试:

- 启动项目 - 导航到 /identity/account/login (这不会自动发生,因为我删除了其他客户端代码) …

asp.net-identity .net-core asp.net-core identityserver4 asp.net-core-identity

6
推荐指数
1
解决办法
695
查看次数

为什么ASP.NET SPA模板会为所有请求实例化UserManager一次?

我正在使用VS2013 ASP.NET SPA模板作为我的Web应用程序的起点,它使用新的ASP.NET身份框架.这是来自模板:

public partial class Startup
 {
     static Startup()
     {
     UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>());
....
}
Run Code Online (Sandbox Code Playgroud)

因此,由于没有将DbContext传递到上面的UserStore构造函数,这表明正在创建一个新的DbContext.由于我也想利用数据上下文(对于请求期间的其他数据操作),我稍微更改了模板代码:

public partial class Startup
 {
public static DerivedDbContext=null;

    static Startup()
    {
   context = new DerivedDbContext();
           UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>(context));
...
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以通过以下方式从我的任何控制器使用相同的DbContext:

Startup.context
Run Code Online (Sandbox Code Playgroud)

但是,当多个请求同时进入时我遇到了麻烦,因为无关的操作发生在同一个DbContext中.从这里开始,我向我指出,我不应该在应用程序的整个生命周期中实例化单个DbContext,而只是为了特定请求的生命周期,所以我将实例化移动到控制器的构造函数,但现在,我在控制器中有自己的DbContext,而UserManager仍然有自己的(并且在Startup类中创建).

为什么模板为所有用户(在Startup类中)实例化了一次UserManager?值得关注的是,通过在控制器构造函数中创建自己的DbContext,有两个DbContexts(我在控制器的构造函数中创建的那个,以及在UserManager中创建的那个,在Startup类中创建的)同时播放?在所有请求中共享一个UserManager是否可以接受,但在一般情况下在所有请求中共享一个DbContext是不可接受的?

有两个单独的上下文似乎是愚蠢的,我注意到我有时会得到一个不同步的数据视图.我想了解是否有其他人在使用此模板时遇到此问题.

**编辑:我理解像nInject这样的IOC框架可能有助于在这种情况下管理对象生命周期,但我想首先了解如何在没有这种框架的帮助下实现这一目标.

谢谢... - 贝恩

entity-framework asp.net-web-api katana visual-studio-2013 asp.net-identity

5
推荐指数
1
解决办法
2663
查看次数

DropZoneJS + JavascriptLoadImage:旋转图像?

我正在尝试结合 DropZoneJS(在此处找到)和 JavascriptLoadImage(在此处找到)来创建一个解决方案,用户可以在其中拖放文件进行上传,并根据图像中的 EXIF 元数据信息,它会旋转它(包括预览缩略图)(如有必要)。我认为提供了所有必要的部分:

DropZoneJS 提供了包含文件对象的“ addedfile”事件。连接该事件处理程序,然后我可以将其参数传递给 JavascriptLoadImage.parseMetaData 函数并正确读取存储的方向值:

var myDropZone = $("#my-awesome-dropzone").dropzone({ url: "/file/post" });

        myDropZone[0].dropzone.on("addedfile", function (file) {


//Successfully loads the image, flips it and sticks the resulting HTML5 canvas in the DOM for display.
            loadImage(file, function (img) {
                document.body.appendChild(img);
            },

            {
                orientation: 2,
                canvas:true
            }
            );


            loadImage.parseMetaData(file, function (data) {
                if (!data.imageHead) {
                    return;
                }
                var orientation = data.exif.get('Orientation');
            },
        {
            maxMetaDataSize: 262144,
            disableImageHead: false
        }
    );

        });
Run Code Online (Sandbox Code Playgroud)

我可以成功进行旋转,但我不确定是否使用生成的画布,并用生成的内容替换放置区“文件”对象。

  • 任何人都可以确认 DropzoneJS 中的“文件添加”事件是否允许我修改文件数据(或者它是否为只读) …

canvas html5-canvas dropzone.js

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

如何检测ASP.NET站点是在本地,azure Web角色还是azure网站上运行?

注意:这与检测本地运行和Azure角色的问题不同,我理解已经回答了这个问题.

我有一个我部署到Azure的APS.NET MVC应用程序.我正在运行Azure工具的V2.5.我希望能够检测代码运行的以下三种情况中的哪一种:

本地(在IIS上调试),Azure网站或Azure Web角色

我在其他帖子中看到了使用以下内容的建议:

RoleEnvironment.IsAvailable
Run Code Online (Sandbox Code Playgroud)

然而,这对我的需求来说似乎是一个不完整的解决方案.它似乎检测代码是在本地运行还是作为Web角色运行没有问题.但是,它似乎没有涵盖检查作为天蓝色网站运行的情况.它不仅不包括这个,而且在Azure网站上运行时尝试检查该属性会使其爆炸:

mscorlib.dll中发生了'System.IO.FileLoadException'类型的第一次机会异常

Additional information: Could not load file or assembly
'Microsoft.WindowsAzure.ServiceRuntime, Version=2.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Run Code Online (Sandbox Code Playgroud)

那么,谁能告诉我如何检测这三种情况?

asp.net-mvc azure azure-web-roles azure-web-sites

5
推荐指数
1
解决办法
2347
查看次数

Linq:从两个不同的列表中找到类似的对象

我有两个单独的自定义对象列表.在这两个单独的列表中,两个列表之间可能存在一些相同的对象,但一个字段("id")除外.我想知道一种查询这两个列表的智能方法来找到这种重叠.我附上了一些代码来帮助澄清.任何建议,将不胜感激.

namespace ConsoleApplication1
{
class userObj
{
    public int id;
    public DateTime BirthDate;
    public string FirstName;
    public string LastName;
}

class Program
{
    static void Main(string[] args)
    {
        List<userObj> list1 = new List<userObj>();
        list1.Add(new userObj()
        {
            BirthDate=DateTime.Parse("1/1/2000"),
            FirstName="John",
            LastName="Smith",
            id=0
        });
        list1.Add(new userObj()
        {
            BirthDate = DateTime.Parse("2/2/2000"),
            FirstName = "Jane",
            LastName = "Doe",
            id = 1
        });
        list1.Add(new userObj()
        {
            BirthDate = DateTime.Parse("3/3/2000"),
            FirstName = "Sam",
            LastName = "Smith",
            id = 2
        });



        List<userObj> list2 = new List<userObj>();
        list2.Add(new userObj() …
Run Code Online (Sandbox Code Playgroud)

c# linq

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