2

我将我的 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);
    }

我已经尝试了以下所有方法,但仍然不知道哪里出错了:

  1. 确保在我的应用程序和 web.config 中没有引用 SimpleMembership。我什至删除了 WebMatrix 引用。
  2. 在我的启动中添加 了filters.Add(new AuthorizeAttribute()) 。
  3. 在启动中添加了以下内容

         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);
    
  4. 在我的上下文中找不到Configuration.ProxyCreationEnabled 。所以意味着默认情况下启用延迟加载。

  5. 在我的登录代码中添加了以下内容:

        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ExternalCookie);
    AuthenticationManager.SignIn(new AuthenticationProperties()
    {
        IsPersistent = isPersistent
    }, identity);
    
  6. 是 - 角色以正确的大小写存在。
4

0 回答 0