0

ロケーションタグを使用してアプリケーションにロールベースのセキュリティを提供しようとしているweb.configファイルがあります。私は多くの記事を読み、その結果に移動します。場所タグは、私の Web 構成のように、許可されたユーザーに制限されたフォルダーへのアクセスを提供します。フォルダー「HRpages 」は、「 HR」としての役割を持つユーザーにのみアクセスを許可します。"。しかし、認証のためにコード ファイル ( Login.aspx.cs ) でこれをどのように使用するかは明確ではありません。

注:現在、"Login.aspx.cs"は " WelcomeHR.aspx " ページにリダイレクトされません。理由がわからない。

Web.Config

<?xml version="1.0" encoding="UTF-8"?>



    <configuration>
        <system.web>
            <compilation debug="true" targetFramework="4.0" />
          <authentication mode="Forms">
            <forms loginUrl="Login.aspx" defaultUrl="WelcomePage.aspx">

            </forms>
          </authentication>

          <authorization>
            <deny users="?" />
          </authorization>

        </system.web>
      <location path="HRpages">
        <system.web>
          <authorization>
            <allow roles="HR" />
            <deny users="*" />
          </authorization>
        </system.web>
      </location>

      <location path="AdminPages">
        <system.web>
          <authorization>
            <allow roles="Admin" />
            <deny users="*" />
          </authorization>
        </system.web>
      </location>
        <system.webServer>
            <defaultDocument>
                <files>
                    <add value="AddTwoNumbers.asmx" />
                </files>
            </defaultDocument>
        </system.webServer>

    </configuration>

ログイン.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

namespace WebServiceExample
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (TextBox1.Text.Trim() == "ABC" && TextBox2.Text.Trim() == "Gupta" && TextBox3.Text == "HR")
            {


                String returnUrl1;
                // the login is successful
                if (Request.QueryString["ReturnUrl"] == null)
                {
                    returnUrl1 = "HRPages/WelcomeHR.aspx";
                }

                //login not unsuccessful 
                else
                {
                    returnUrl1 = Request.QueryString["ReturnUrl"];
                }
                Response.Redirect(returnUrl1);
            }

        }
        }
    }

何か助けて????

4

1 に答える 1

0

おそらく、このケースは正しくありません:

if (Request.QueryString["ReturnUrl"] == null)

たとえそうであったとしても、ユーザーをログインさせたり、ロールを「HR」に設定したりしていないため、適切なリダイレクトでは、ユーザーはページにアクセスできません。

FormsAuthentication.SetAuthCookieでユーザーをログインできます。

if (TextBox1.Text.Trim() == "ABC" && TextBox2.Text.Trim() == "Gupta" && TextBox3.Text == "HR")
{
    FormsAuthentication.SetAuthCookie("ABC", true); //this will login the user as ABC

    String returnUrl1;
    //I don't understand how the logic below determines successful login or not.

    // the login is successful
    if (Request.QueryString["ReturnUrl"] == null)
    {
        returnUrl1 = "HRPages/WelcomeHR.aspx";
    }
    //login not unsuccessful 
    ...

また、ロール管理を使用する必要があります...参照していません。

于 2013-10-01T13:32:14.707 に答える