繁体   English   中英

如何在Web API中为桌面应用程序中的自定义数据库模型(代码优先)设置基于令牌的身份验证

[英]How to setup token based authentication in Web API for custom Database Model (Code First) in desktop app

有很多类似的问题,我一直在网上寻找我的特殊情况的解决方案,但过去两天没有成功...

因此,目前我有3个独立的项目:具有使用HTTPClient连接Web API的客户端应用程序的项目,具有数据库模型(数据库中的代码优先)的项目和具有Web API的项目。 我设法正确设置了Web API,以便可以从客户端应用程序发送HTTP请求并从IIS上的服务器获取数据,但无法处理基于令牌的正确身份验证。

我在网络上尝试了一些解决方案,但没有一个对我有用,或者我可能不太清楚。

第一个解决方案是: 如何在asp.net Web API 2中自定义对我自己的表集的身份验证? 这个想法是使用身份技术-通过继承IUser在数据库模型中扩展我自己的User表。 即使未触摸Web API项目中的任何内容,我的User表的IUser父类也导致我的请求停止工作并返回内部服务器错误。 所以我想-这可能不是正确的方法。

我尝试过的第二个解决方案是: DB-First身份验证与ASP.NET Web API 2 + EF6的混淆我不太确定上面链接中的代码中的userService对象是什么。 似乎它还返回了一些Identity对象,但是它如何生成一个,是否在内部执行所有UserStore对象,UserManager等,还是只是连接到数据库上下文并手动创建了一些Identity? 即使有这些事情,我也不明白另一件事。 因为在Owin中,启动类上方应该有这样的属性(例如):

[assembly: OwinStartup(typeof(WebApi2.Startup))]
class Startup
{...}

它缺少上面的链接,但我想Authetication以某种方式初始化是必要的吗? 不幸的是,除非具有Web API的项目被选中为Startup Project(在Visual Studio中),否则使用此属性,我什至无法编译解决方案。 但是在我的解决方案中,客户端应用程序应该是启动项目,在这种情况下,会出现以下构建错误:严重性代码说明项目文件行

Error       Unknown build error, 'Cannot resolve dependency to assembly 'Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.'    BooksLibraryV2      

我已经完全对这种身份验证感到困惑...如果有人可以将我指向正确的方向,最终我将不胜感激。 如果有人愿意向我阐明正确的方法,我也会给予赏金。

语法-使用代码优先的方法从应用程序创建数据库-用于OWin身份模型

1) enable-migrations -ContextTypeName <DbContext-Name-with-Namespaces> -MigrationsDirectory:<Migrations-Directory-Name>
2) Add-Migration -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> <Migrations-Name>
3)Update-Database -configuration <DbContext-Migrations-Configuration-Class-with-Namespaces> -Verbose

Enable-Migrations -ContextTypeName:OwinAuthenticationWebApiApplication.Models.OwinAuthDbContext -MigrationsDirectory:EntitiesMigrations

Add-Migration –configuration OwinAuthenticationWebApiApplication.EntitiesMigrations.Configuration InitialEntities

Update-Database -configuration:OwinAuthenticationWebApiApplication.EntitiesMigrations.Configuration -Verbose

原来那个属性:

[assembly: OwinStartup(typeof(WebApi2.Startup))]

不需要,虽然默认情况下在Web API个人用户身份验证模板中是必需的... OWIN会自动在所有程序集中搜索名为Startup的类。 因此,删除此属性后,我终于可以按照Fabio Luz DB-First身份验证与ASP.NET Web API 2 + EF6混淆的提示,编译解决方案并设置基本令牌身份验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM