【问题标题】:Implemeting CustomRoleProvider and use the role for the authorisation in MVC3 asp.net在 MVC3 asp.net 中实现自定义角色提供者并使用角色进行授权
【发布时间】:2012-10-20 09:35:04
【问题描述】:

我一直在学习如何从一些教程中实现 CustomRoleProvider,并设法实现了以下 2 个主要方法

    public override string[] GetRolesForUser(string userName)
    {
        string connectionString =
          ConfigurationManager.ConnectionStrings["myDb"].ConnectionString;
        DataContext context = new DataContext(connectionString);
        Table<UserObj> usersTable = context.GetTable<UserObj>();
        UserObj userObj = usersTable.SingleOrDefault(u => u.UserName == userName);
        string roleId = userObj.UserRoleID;

        if (roleId != null)
            return roleId.Select(c => c.ToString()).ToArray();
        else
            return new string[] { }; 

    }

    public override bool IsUserInRole(string userName, string roleName)
    {
        string connectionString =
         ConfigurationManager.ConnectionStrings["myDb"].ConnectionString;
        DataContext context = new DataContext(connectionString);
        Table<UserObj> usersTable = context.GetTable<UserObj>();
        UserObj userObj = usersTable.SingleOrDefault(u => u.UserName == userName);

        if (userObj != null)
        {
            string roleId = userObj.UserRoleID;
            if (roleId.Equals(roleName))
                return true;
        }
       return false;
    }

然后我在控制器的 index 方法上添加了 [Authorize(Roles = "admin")],我希望只有管理员可以访问该控制器。当我试图访问该页面时,它似乎执行了一个限制,例如,如果我输入 url:

       http://localhost:60353/module

..它把我重定向到

        http://localhost:60353/Account/LogOn?ReturnUrl=%2fmodule

但是,角色似乎没有被检查。

我在这里做错了什么?

【问题讨论】:

    标签: asp.net-mvc-3 authorization roleprovider


    【解决方案1】:

    我也面临同样的问题,但我可以调用 CustomProvider 方法:

    IsUserInRoles()

    明确地说,但它似乎是正确的,因为可访问性没有改变......它总是只重定向到登录屏幕......

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2010-10-20
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多