私のアプリケーションでは、特定の特権を持つこれらのユーザーのみがアクセスできるいくつかの領域(ビュー)があります。現在ログに記録されているユーザーには、特定のビューを表示する権限がありません。ポップアップウィンドウが表示されます。この瞬間、ユーザはビューを見るためにいくつかの追加情報を与えることができます。要点は、ユーザーがこの情報を提供するまで現在のビューを残すことができないことです。これまでのところ、私はそうすることができると思います。まず、カスタムAuthorizeAttributeを定義しました。この属性は、制限されたビューを保護する役割を果たすコントロールに適用されます。私の属性は、このASP.NET MVC - 追加の資格情報を渡すためのモーダルウィンドウ
public class PopupAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Session["confirmed"] == null)
{
filterContext.Controller.ViewData["ShowPopup"] = true;
}
else
filterContext.Controller.ViewData["ShowPopup"] = false;
}
}
次のようになります。私は生憎の結果は、私が予想以上に異なっていた
...
...
<body>
<div id="main">
@{
if ((ViewData[ShowPopup] != null && (bool)ViewData[ShowPopup]))
{
<script type="text/javascript">
showPopUp();
</script>
}
}
<div id="header">
title
</div>
<div id="menu">
@{
Html.RenderAction("TopMenu", "Menu");
}
</div>
<div id="treeView">
@{
Html.RenderAction("TreeMenu", "Tree");
}
</div>
<div id="content">
@RenderBody()
</div>
</div>
</body>
...
...
この方法を見て_Layout.cshtmlを修正しました。これで、ユーザーがアクセスできないビューがレンダリングされ、ポップアップが表示されます。私はViewDataをに格納されている情報をlosseことを行う場合はその
public class PopupAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Session["confirmed"] == null)
{
filterContext.Controller.ViewData["ShowPopup"] = true;
filterContext.Result =
new RedirectResult(filterContext.RequestContext.HttpContext.Request.UrlReferrer.ToString());
}
else
filterContext.Controller.ViewData["ShowPopup"] = false;
}
}
ようSTHをやって、私のカスタム属性の前の1に、現在のビューをリダイレクトしようとしました。この機能を実現するためのエレガントな方法がありますか?不幸にも、私はユーザーを「通常の」ページにリダイレクトできません。これはポップアップウィンドウで行う必要があります。
基本的に感謝するためにここに
は、私はそれが良いと思われる見られるものです私の役割私は役割提供者のようにsthを行います。本当の問題はpopWindowを表示する方法を理解することです。通常のroleproviderではログインページにリダイレクトされますが、現在のビューでポップアップウィンドウを表示したい – Berial
実際にリダイレクトとログイン認証はMembershipProviderによって処理されます。ビュー上に「ポップアップ」ウィンドウを表示するにはいくつかの方法がありますが、私は「ポップアップ」ウィンドウを自分の答えに表示するかどうかを判断する方法にもっと関心がありました。モーダルポップアップウィンドウを表示する1つの方法は、jQuery UIライブラリを使用することです。その中にダイアログコントロールがあります。かなり使いやすいように使用しています。 –