ASP.NET ASHX 302表单身份验证问题

iibxawm4  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(60)

我有一个使用.NET Framework 4.7.2的ASP.NET应用程序。它有一个模态弹出窗口,让用户输入一些注解,然后保存。用户有时使用显示弹出窗口的按钮,输入由于身份验证过期而在回发时被拒绝的注解。我想在窗口弹出时快速检查身份验证,所以我想我应该尝试一个.ashx页面,我从chatGPT得到了以下代码:

$.ajax({
url: 'yourHandler.ashx',
type: 'GET', // or 'POST'
success: function(response) {
    // Do something with the response
    console.log(response);
},
error: function(xhr, status, error) {
    // Handle any errors
    console.error(error);
}

字符串
});
这给了我一个302回到我的默认.aspx。有没有更好的方法来做到这一点?我可以用代码或配置修复302?我想知道我是否需要在某个地方注册ashx。
TIA,我的ASP.NET编程技能有限:-)

4nkexdtk

4nkexdtk1#

好吧,如果你在一个网页上,你不希望会话过期?
只需向现有页面添加一个简单的Web方法,并触发一个JavaScript计时器来调用一些“虚拟”Web方法。
我的意思是,要么让会话过期,要么不过期。所以,你可以让页面保持活动状态,只要你愿意。或者,当用户执行一些需要服务器端代码的操作时,他们将再次收到登录提示。所以,为了避免这个问题,我们保持页面活动状态,不让会话过期。
所以,假设你有jQuery,那么在你的标记中,你可以说触发一个简单的小请求到网页上。只要他们在那个网页上,那么他们的会话就永远不会超时。
所以,比如说这个JavaScript/jQuery -你可以把它放在表单的末尾,这样:

<script>

        $(window).on('load', function () {
            // web page fully loaded
            // start a little javascript function to run every 1 minute

            setTimeout(MyTickTok(), 60000)

        })

        function MyTickTok() {

            // any web method call re-sets session time out.

            $.ajax({
                type: "POST",
                url: '<%= ResolveUrl("~/Test/TableMunch.aspx/TickTock") %>',
                data: {},
                contentType: "application/json; charset=utf-8",
                datatype: "json",
                success: function (data) {
                    setTimeout(MyTickTok, 60000) // run again in 60 seconds
                },
                error: function (request, status, error) {
                    var r = request.responseText
                    var errorMessage = r.Message
                    console.log(errorMessage)
                }
            });
        }

    </script>

字符串
并为该网页隐藏代码,只需添加一个web方法,如:
(导入系统.Web.服务)

<WebMethod>
Public Shared Function TickTock() As String

    Return "hello"

End Function


因此,现在会话不会超时,因为我们每60秒“触摸”一次网页。

相关问题