私はプログラミングの初心者で、英語もかなり下手なので、この投稿があなたを混乱させてしまったら申し訳ありません。
企業の情報を管理する基本的な ASP .NET MVC Web アプリケーションを実装しています。このアプリケーションには 2 つのページがあります。1 つは、このページにアクセスするために何も必要としない情報を表示するためのものです。もう 1 つは、会社の管理者ロールを持っている場合にのみこのページにアクセスできる情報を編集するためのものです。
public ActionResult ViewInfo(string companyId)
{
return View();
}
[Authorize(Roles = "Admin")]
public ActionResult EditInfo(string companyId)
{
return View();
}
2 つの会社にアクセスできるアカウントを持っているが、そのアカウントが両方の会社でまったく異なる役割を持っている場合。(たとえば、アカウントは会社 A の管理者であり、会社 B の通常のユーザーです)。
アクセスしようとしている会社の役割ベースを取得する簡単な方法はありますか? カスタム RoleProvider を使用してみましたが、追加のパラメーターをメソッドに渡すことができないようです。
なんかこう?
public class CustomRoleProvider : RoleProvider
{
public override bool IsUserInRole(string username, string roleName)
{
string companyId = GetCompanyId(); // Is there any good way to get this companyId from the Controller?
return userCompanyRoles.Any(u => u.Username == username && u.CompanyId == companyId && u.Roles.Any(r => r.Name == roleName));
}
...
}
編集
私のアプリケーションには 4 つのモデルがあります。
public class User {
public string Id { get; set;}
...
}
public class Company {
public string Id { get; set;}
...
}
public class Role {
public string Name { get; set;}
...
}
public class UserCompanyRoles {
public string UserId { get; set; }
public string CompanyId { get; set; }
public List<string> Roles { get; set; }
}
というわけで表はこんな感じ
UserId CompanyId Role
1 A User
1 A Admin
1 B User
2 B Admin
2 C User
3 A Admin
3 C Admin