MVC 5 Asp.Net Identity授权属性错误

时间:2014-05-30 16:57:47

标签: c# asp.net asp.net-mvc asp.net-identity-2

我将我的MVC应用程序从SimpleMembership迁移到ASP.Net Identity 2.0,并从应用程序中删除后者的所有引用。

但是每当我在控制器中使用authorize属性时,我都会遇到 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. 在我的上下文中找不到
  5. Configuration.ProxyCreationEnabled 。因此,默认情况下启用延迟加载。

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

        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    ClaimsIdentity identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ExternalCookie);
    AuthenticationManager.SignIn(new AuthenticationProperties()
    {
        IsPersistent = isPersistent
    }, identity);
    
  7. 是 - 角色存在于正确的情况下。

0 个答案:

没有答案