2

私はウェブアプリケーションを開発しています。ユーザーが同じセッションで同じウィンドウを開くと、セッションに小さな問題があります。

例: ユーザーがページ user を開き、このオブジェクトをセッション (Session["user"] = user) に保存するユーザーを選択し、別のタブ ブラウザーで同じウィンドウを開き、他のユーザーを選択した場合、私はオーバーライドします。セッション値 (Session"["user"] = user).....

私は解決策を考えています:

  • ユーザーが同じ PC で同じウィンドウを開くことができないようにする
  • ユーザーが開いたページごとに一意の ID を作成する

どう思いますか?より良い解決策はどれですか?

よろしくお願いいたします。

4

3 に答える 3

0

ユーザーが2つの異なるタブまたはブラウザーで同じページを開くのを防ぐことはできないと思います。したがって、各ウィンドウがアプリケーション内の個別の「セッション」であることを確認する必要がある場合は、非表示のHTML入力に格納されている可能性のある何らかの一意のIDが必要になります。

于 2012-04-26T15:32:03.737 に答える
0

ご回答ありがとうございます。

投稿を読みましたブラウザタブでセッションを区別する方法は? タブごとに一意のIDを生成するソリューションがいくつか見つかりました。

解決策は次のとおりです。

それらをレビューし、結果をお伝えします。

誰かが別の解決策を知っているなら、いつでも大歓迎です!

よろしくお願いします、

于 2012-04-27T06:28:44.963 に答える
0

この例では、cookieless セッションを使用する必要があります - system.web の web.config で

<sessionState mode="InProc" timeout="20" cookieless="UseUri" />

これは、URL にセッション ID を挿入することで、www.host.com/(abc15284dndhjkdm)/app.aspx のようになります。これはタブごとに一意であるため、ユーザーはタブごとに一意のセッションを持つことができます。

編集: - これは、web3.adprs.net/test/test1.aspx で表示する aspx ページのコードです。

Test1.aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="test1.aspx.vb" Inherits="WebApplication4.test1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">
    <title></title> </head>
     <body>
        <form id="form1" runat="server">
        <div>
        Enter User <asp:TextBox ID="user" runat="server"></asp:TextBox>
        <asp:Button ID="go" runat="server" Text="Go" />
        </div>
        </form>
    </body></html>

Test1.aspx.vb

Public Class test1
    Inherits System.Web.UI.Page

    Private Sub go_Click(sender As Object, e As System.EventArgs) Handles go.Click
        Session("user") = user.Text
        Response.Redirect("test2.aspx")
    End Sub
End Class

Test2.aspx

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    Your user from session is <%=Session("user").ToString%>
    </div>
    </form>
</body>
</html>

web.config

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
    <sessionState mode="InProc" timeout="20" cookieless="UseUri" />
  </system.web>
  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

HTH

于 2012-04-26T15:48:58.353 に答える