我使用以下重写方法创建了一个自定义角色提供程序:
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在应用程序外部进行身份验证,因此我们在项目内部没有身份验证。
答案 0 :(得分:0)
此参数填充在哪里?
通常,GetRolesForUser方法是从客户端代码(您在应用程序中编写的代码)中调用的,因此onus是您传递用户名的。 UserName通常是用户登录系统时使用的登录用户名,因此您应该拥有它。
如果您想以编程方式发现它,您可以使用
System.Web.HttpContext.Current.User.Identity.Name
ASP.NET MVC中的。