Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC 5.1.0中基于MVC 5角色的身份验证_Asp.net_Asp.net Mvc_Asp.net Identity_Owin_Role Base Authorization - Fatal编程技术网

Asp.net MVC 5.1.0中基于MVC 5角色的身份验证

Asp.net MVC 5.1.0中基于MVC 5角色的身份验证,asp.net,asp.net-mvc,asp.net-identity,owin,role-base-authorization,Asp.net,Asp.net Mvc,Asp.net Identity,Owin,Role Base Authorization,我在项目中使用基于角色的身份验证时遇到了问题 我设置了一些角色并将它们链接到用户 这项工作: [Authorize] public class UsersController : Controller {} 如果我没有登录,它会要求我登录 但是,如果我将其更改为: [Authorize(Roles = "ManageUsers")] public class UsersController : Controller {} 我试着从用户那里访问它,这个角色要求我登录 因此,

我在项目中使用基于角色的身份验证时遇到了问题

我设置了一些角色并将它们链接到用户

这项工作:

 [Authorize]    
public class UsersController : Controller
{}
如果我没有登录,它会要求我登录

但是,如果我将其更改为:

 [Authorize(Roles = "ManageUsers")]    
public class UsersController : Controller
{}
我试着从用户那里访问它,这个角色要求我登录

因此,我做了一些观察,发现了这篇帖子:他们建议添加:

 <roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">
  <providers>
    <clear />
    <add name="AspNetSqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </providers>
</roleManager>
因此,我需要一些关于从这里出发的建议:

我只是想利用默认项目实现的角色,我已经填充了数据库等。我只是无法让我的过滤器工作

我想我对不同类型的音乐感到困惑 认证

public void ConfigureAuth(IAppBuilder app)
    {
        // Enable the application to use a cookie to store information for the signed in user
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            ExpireTimeSpan = TimeSpan.FromMinutes(5),
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login")
        });
我同意。首先,身份验证与登录有关。用户登录后,将对其进行身份验证

基于用户角色限制对控制器操作或其他资源的访问称为授权。很多时候,人们把这两个安全问题作为auth一起讨论。然而,在我看来,您已经实现了身份验证,并且在授权方面遇到了问题

据我所知,您的web.config中的roleManager部分与Microsoft.AspNet.Identity不兼容,看起来您正在使用它。如果在某处设置了
UserManager
类,则应使用Microsoft.AspNet.Identity角色系统,而不是旧角色管理器。因此,请从web.config中删除该部分

听起来好像Microsoft.AspNet.Identity正在阻止对您的操作进行基于角色的访问,因为其中的某些内容未正确设置。该库有自己的类RoleManager,类似于UserManager,用于管理角色。您在问题中没有为任何人提供足够的信息来帮助您确定问题的确切原因。但是,如果您对Microsoft.AspNet.Identity RoleManager进行了一些研究,那么您应该能够自己调试该问题。祝你好运