私は従業員でいっぱいになっている別々のデータベースを持っていて、それぞれ固有の電子メールアドレスを持っています。私が作成しているウェブサイトでは、従業員はアカウントを登録することができ、一致する電子メールアドレスを持っている場合は、連絡先情報を表示し、可能であれば編集します。ASP MVC IDでは、基準に基づいてアクセスを制限する最良の方法は何ですか?
これを達成するために使用したコードは次のとおりです。
[AllowAnonymous]
// GET: Contacts/Details/
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Contact contact = db.Contacts.Find(id);
if(User.IsInRole("Admin")||(User.Identity.GetUserName()==contact.Email))
{
return View(contact);
}
if (contact == null)
{
return HttpNotFound();
}
return RedirectToAction("AccessDenied","Error");
}
理想的には私は[AllowAnonymous]
を削除し、
[Authorize(Roles="Admin",Users=User.Identity.GetUserName())]
のようなものを持っていると思いますが、これは誤りプルアップ:
"User.Identity.GetUserName() an object reference is required".
どれsuggesionsを?
'Users = User.Identity.GetUserName()'で達成しようとしていることは何ですか?編集:ああ私は今参照してください。アクションフィルタを作成することができます。それはかなり無痛なプロセスです。 –
申し立てを作成するにはどうすればよいですか?デフォルトのASP.Net IDコードを使用しますか?ASP.Net MVCが付属していますか? – Win