私のサイトは誰でも利用できますが、ユーザーとパスワードを持つマネージャーのみが入力できるメソッドを備えたコントローラーがあります。ブール値を に保存IsManager
していsession
ます。
authorize 属性を使用して、誰でもブロックしたいと思いますIsManager == false
。
6112 次
2 に答える
8
最初に次を定義しますActionFilter
。
public class TheFilter: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var session = filterContext.HttpContext.Session;
if ((bool?)session["IsManager"] == true)
return;
//Redirect him to somewhere.
var redirectTarget = new RouteValueDictionary
{{"action", "{ActionName}"}, {"controller", "{ControllerName}"}};
filterContext.Result = new RedirectToRouteResult(redirectTarget);
}
}
次に、制限されたアクション (またはコントローラー) の上で使用します。
//[TheFilter]
public class ManagersController : Controller
{
[TheFilter]
public ActionResult Foo()
{
...
return View();
}
}
于 2012-03-21T17:31:11.063 に答える
1
これを ASP.NET セキュリティと一致させるには、IsManager ロールをメンバーシップ/ロール システムに追加してから、そのユーザーをロールに追加する必要があります。その場合、ハッキングは必要なく、組み込みの Authorize 属性を使用できます。
組み込みのメンバーシップ プロバイダーを使用していますか? もしそうなら、これは簡単です。
于 2012-03-21T18:13:55.543 に答える