我正在尝试在现有应用程序中实现Asp.Net Identity 2.0 (OWIN),但是在角色方面遇到了各种问题。我从项目模板创建了一个示例项目,并且(据我所知)将其中的所有内容都复制到了我的应用程序中。我修改了连接信息,以便认证表来自于我的Sql数据库而不是默认的本地DB。
一切似乎都很顺利。表在启动时被初始化(创建),我可以创建一个新用户,为该用户分配角色,并以该用户身份登录。但是,当我尝试检查用户是否属于特定角色时,我会收到一个异常,指示找不到本地数据库的问题。那肯定是因为我没有使用本地DB。那么为什么我的应用程序会在(不存在的)本地DB中查找角色呢?
为了排除我的Sql实例中的奇怪情况,我更改了示例应用程序的连接数据,使其指向我的DB并运行它。我可以使用我在应用程序中创建的用户登录,甚至可以成功地查询该用户的角色。通过直接检查表格,我确认了这一点,并验证了用户、角色和用户-角色关联都存在。
但是,我注意到了一件事情。当我运行示例应用程序时,用户是
那么,我错过了什么?为什么我的应用程序返回一个
我正在为此拔光我的头发!任何帮助都将不胜感激。
一切似乎都很顺利。表在启动时被初始化(创建),我可以创建一个新用户,为该用户分配角色,并以该用户身份登录。但是,当我尝试检查用户是否属于特定角色时,我会收到一个异常,指示找不到本地数据库的问题。那肯定是因为我没有使用本地DB。那么为什么我的应用程序会在(不存在的)本地DB中查找角色呢?
为了排除我的Sql实例中的奇怪情况,我更改了示例应用程序的连接数据,使其指向我的DB并运行它。我可以使用我在应用程序中创建的用户登录,甚至可以成功地查询该用户的角色。通过直接检查表格,我确认了这一点,并验证了用户、角色和用户-角色关联都存在。
但是,我注意到了一件事情。当我运行示例应用程序时,用户是
System.Security.Claims.ClaimsPrincipal
的实例。但是当我运行我的应用程序时,用户是System.Web.Security.RolePrincipal
的实例。那么,我错过了什么?为什么我的应用程序返回一个
RolePrincipal
而不是ClaimsPrincipal
?我在哪里可以寻找线索?我正在为此拔光我的头发!任何帮助都将不胜感激。