私はこれに関する多くの経験がありません。皆さんから良い提案を得ることを本当に願っています。私は次のセキュリティシナリオを実装する必要があり、それを実行する最善の方法を知りたいと思います。ASP.NET MVCでのカスタムセキュリティシナリオ
従業員、監督者、部長がいるとします。 従業員と監督者の両方に、自分が属している部門マネージャを指し示しているManagerIdが割り当てられています。
スーパーバイザーユーザーがログインすると、彼と同じマネージャーIDに属する従業員のレコードのみが表示されるようにします。 ManagerId!=従業員のManagerIdがアクセスしたいので、別のManagerIdユーザーの別の監督者がログインして、他の従業員の情報をurl(例:wwww.domain.com/employee/details/{id})に手動でパンチすると、 制限される。
意味がありますか?
public ActionResult Details(int id)
{
var employee = employeeRepository.Get(id)
var user = (CustomIdentity)ControllerContext.HttpContext.User.Identity;
if(employee.managerId == user.managerId)
{
Do whatever...
}
else
{
Not allowed
}
}
しかし、すべてActionMethodsでそれを入力すると冗長なようだとjust..ehh ...私はより良い方法があるに違いありません知っている:
は私のようなすべてのActionMethodsにチェックを入力し始めました。
ありがとうございます。とても興味深い。 ここには本当に「Else」が必要ですか? If(employee.managerId!= user。)とは言えません。managerId) 新しいMyUnauthorizedException()をスローします。 ...そうしないと、これを実装するメソッドがトリガーされます。いいえ?私は何が欠けていますか? (employee.managerId == user.managerId)ステートメントの場合は、あなたが持っているものの要点は何ですか? – Shenaniganz
elseの必要はありません...実行を継続するという点を確認するだけです。 – agarcian