【解決方法】直接 URL アクセスを制限する方法

プログラミングQA


やあ、

私の Web アプリケーションでは、フォーム認証を使用しています。 Default.aspx フォームへのログイン リダイレクトに成功した後、最初にログイン ページ (Login.aspx) を読み込みます。 デフォルト ページでは、すべてのメニューが一覧表示されます。メニューをクリックすると、デフォルト ページ内にページがロードされます (Telerik コントロールを使用)。
今、私は問題に直面しています.ユーザーが直接URLを入力している間(ページ名の1つがpage1.aspxであると仮定します)、例: Myapplication/page1.aspx ページがロードされています これを制限したい.

これに対する解決策を提案してください。

解決策 2

これはすべて web.config で location タグを使用して実行できます。

HTML
<location path="Page1.aspx" allowoverride="false">
   <system.web>
     <authorization>
       <deny users="?" roles="TEMP" />
       <allow roles="ADMIN, USERS" />
     </authorization>
   </system.web>
 </location>

詳細については、次のリンクを参照してください。

https://wiki.asp.net/page.aspx/653/aspnet-webconfig–location-and-authroization-tags/[^]

ASP.NET メンバーシップ – パート 1[^]

解決策 3

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class NoDirectAccessAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.UrlReferrer == null ||
 filterContext.HttpContext.Request.Url.Host != filterContext.HttpContext.Request.UrlReferrer.Host)
        {
     filterContext.Result = new RedirectToRouteResult(new
                               RouteValueDictionary(new { controller = "Home", action = "Logout", area = "Main" }));
        }
    }
}

次に、コントローラーに属性を追加します。

解決策 1

「セッション変数」とサイトマスターを検索して調べる(任意)

ログイン時に、ログイン情報を保存するためのセッション変数として使用し、

すべてのページまたはマスターページは、セッションでその変数を確認する必要があります。問題がない場合は、ユーザーがページをロードできるようにし、そうでない場合はログインページにリダイレクトします

ログインページで:

Session.add(“my変数名”, “値”)

マスターページ、またはすべてのページ読み込みで
c#

C#
if (Session["myvariableName"]!=Null & Session["myvariable"]!= "value") Response.Redirect("Login.aspx",true);

vb .net

VB
if Session("myvariableName") isnot nothing and Session("myvariable") = "value"
Response.Redirect("Login.aspx",true)
end if

コメント

タイトルとURLをコピーしました