我将我的 MVC 应用程序从 SimpleMembership 迁移到 ASP.Net Identity 2.0,并从应用程序中删除了后者的所有引用。
但是每当我在控制器中使用授权属性时,都会遇到SQLExpress 数据库文件自动创建错误: . (顺便说一句,我使用的是 Ms SQL 2012,所有其他功能都与 EF 配合良好)
[Authorize(Roles = "Admin")]
public ActionResult UserList()
{
var users = db.AspNetUsers.ToList();
return View(users);
}
我已经尝试了以下所有方法,但仍然不知道哪里出错了:
- 确保在我的应用程序和 web.config 中没有引用 SimpleMembership。我什至删除了 WebMatrix 引用。
- 在我的启动中添加 了filters.Add(new AuthorizeAttribute()) 。
在启动中添加了以下内容
app.CreatePerOwinContext(ApplicationDbContext.Create); app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create); app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create); // Enable the application to use a cookie to store information for the signed in user app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login") }); // Use a cookie to temporarily store information about a user logging in with a third party login provider app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
在我的上下文中找不到Configuration.ProxyCreationEnabled 。所以意味着默认情况下启用延迟加载。
在我的登录代码中添加了以下内容:
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ExternalCookie); AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
- 是 - 角色以正确的大小写存在。