0

我使用以下重写方法创建了一个自定义角色提供程序:

public override string[] GetRolesForUser(string username)
    {
        MyAppUser user = userRepository.Get(u => u.Username == username).FirstOrDefault();
        //MyAppUser user = userRepository.Get(u => u.Username == "testuser").FirstOrDefault();
        if (user == null)
        {
            string[] roles = new string[1];
            roles[0] = "Fail";
            return roles;
        }
        else
        {
            Role role = roleRepository.Get(r => r.RoleID == user.RoleID).FirstOrDefault();
            if (role == null)
            {
                string[] roles = new string[1];
                roles[0] = "Fail";
                return roles;
            }
            else
            {
                string[] roles = new string[1];
                roles[0] = role.Name;
                return roles;
            }
        }

    }

单击仅授权给管理员的站点部分后,当直接传递用户名“testuser”时,我成功地点击了上述方法,但否则我的用户名参数始终为空。这个参数在哪里填充?我怎样才能拥有它,以便在此处检查我当前的登录用户,我有一个名为 MyAppUser 的类,它保存用户详细信息,但身份验证是由 ADFS 在应用程序之外完成的,因此我们在项目内部没有身份验证。

4

1 回答 1

0

这个参数在哪里填充?

通常 GetRolesForUser 方法是从客户端代码(您在应用程序中编写的代码)调用的,因此您有责任传递用户名。UserName 通常是用户用来登录您的系统的登录用户名,因此您应该拥有它。

如果您想以编程方式发现它,您可以使用

System.Web.HttpContext.Current.User.Identity.Name

在 ASP.NET MVC 中。

于 2013-09-13T06:28:49.383 回答