1

私の質問は、セッション情報を使用してWebサイトに機能を実装する方法についてのアドバイスを求めることです。ランディングページでユーザー名とパスワードを要求するWebサイトがあります。ユーザーが正常にログインすると、ユーザー名とアカウントに関連する他のいくつかの変数を格納するセッションが作成されます。Page_Loadログイン直後の関数では、セッション変数を介してユーザーに添付されたこの情報に正常にアクセスし、正しく実装されていることを確認しています。

MySessionクラスの場合:

private MySession()
{
   Username = Data.User.lblUsername;
   CompanyId = Data.User.lblCompanyId;
}

私のウェルカムページ(ログインに成功した直後)

private void Page_Load(object sender, System.EventArgs e)
{
   secure_username = MySession.Current.Username;
   ...
}

この情報を使用します。つまりsecure_username、ページにアクセスしたときにユーザーを検証して、ユーザーがログインフォームをスキップできないようにします。MySessionクラスからif(MySession.Current.Username == ??)、関数の開始時にステートメントを使用して各変数をチェックするだけPage_Loadですか、それともこれを実行する適切な方法がありますか?

必要な場合は説明を求めてください。ありがとう。

編集:与えられた応答のいくつかに基づいて、ユーザーが突然匿名になった(またはタイムアウトした)場合は、ログインページにリダイレクトする必要があることに注意することが重要だと思います。

4

2 に答える 2

2

フォーム認証を使用している場合は、次のタグを追加web.configして匿名アクセスを拒否できます。これを行う場合、ユーザーがすべてのページにログインしているかどうかを確認する必要はありません。

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

これを追加すると、すべてのユーザーがLogin.aspxを表示して、ログインできるようになります。

<location path="Login.aspx" allowOverride="false">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

これを追加して、すべてのcss/imagesフォルダーが匿名ユーザーに表示されるようにします

<location path="css" allowOverride="false">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

<location path="images" allowOverride="false">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

Webサイトの設定と、匿名ユーザーにアクセスを許可するフォルダーに基づいて、ロケーションタグを追加する必要がある場合があります。

ログインフォーム認証セッションの有効期限が切れると、ユーザーはこのタグで言及したURLにリダイレクトされます

<forms loginUrl="Login.aspx" timeout="30">
</forms>
于 2013-01-02T18:04:14.050 に答える
1

すべてのページで同じアクションを実行する必要がある場合は、すべての安全なページが継承する基本クラスが必要であるように思われます。

ベースページ:

public class BasePage : System.Web.UI.Page
{

  public user secure_username
  {get;set;}

  protected void Page_Load(object sender, EventArgs e)
  {
    //add your checks that repeat on each page
  }
}

他のページ:

public class AuthenticatedUsersPage : BasePage
{

}

:これはもちろん、構成ファイルの承認と認証を既に行っていることを前提としています(詳細については、rsの回答を参照してください)。また、フォーム認証を使用している場合は、フォーム認証のタイムアウトよりもセッションを長くすることを忘れないでください。

于 2013-01-02T17:52:12.747 に答える