我正在开发一个MVC 5应用程序,它通过Facebook登录验证用户。 Login功能正在使用SQL Server。我正在将数据集迁移到本地mySQL数据库。
我一直在关注这两页的说明: Implementing a custom MySQL Identity Storage Provider EF6 Support
登录部分正在运行,但我在视图中遇到上述错误:
userInfo
以下是我的构造函数:
@if (Request.IsAuthenticated && User.IsInRole(MyConstants.Defaults.Roles.Admin))
我的默认连接字符串包含用户名和密码。还有其他地方我需要提供它的参考吗?
更新31/08
以下是错误的堆栈跟踪。除了调用System.Web.Security.RolePrincipal之外,执行还直接跳转到mysql Provider。我认为代码绕过了我设置的自定义身份提供程序 - 如果我在代码中明确地调用它,它可以工作吗?
public class ApplicationDbContext : MySQLDatabase
{
public ApplicationDbContext(string connectionName)
: base("DefaultConnection")
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext("DefaultConnection");
}
}
答案 0 :(得分:1)
我在Nuget中使用预先构建的MySQL身份提供程序尝试了另一个mySQL Identity示例 - 在视图中添加User.IsInRole子句并没有轰炸应用程序,但是无论角色是什么,答案总是回归错误用户是。的成员。
在另一个与此问题相关的SO问题中,提出了以下解决方案: https://stackoverflow.com/a/31325939/530762
在Web.Config中,我已经删除了FormsAuthenticationManager,但添加此行就可以了:
<modules>
<remove name="RoleManager" />
</modules>