ورود / ثبت نام
0
0

هدایت خودکار کاربر پس از پایان یک Session در ASP.Net

326 بازدید
Session در ASP.Net

Session در ASP.Net

در اینجا به شما توضیح میدهم که چگونه عملیات هدایت خودکار کاربر را پس از پایان یک Session در ASP.Net با استفاده از C# و VB.Net انجام دهیم. زمانی که Session به پایان رسید , کاربر به صورت اتوماتیک به صفحه ی ورود هدایت میشود.پیش از این مقله ما Session را به صورت کامل برسی کردیم و یک کتاب جامع از آن را برای شما آماده دانلود کردیم که در دسترس شماست.

Web.Config

برای این مقاله زمان اتمام Session 1 دقیقه در نظر گرفته میشود.

<sessionState timeout = "1"/>

 

 HTML Markup

HTML Markup شامل یک پنجره ی ASP.Net AJAX Modal همراه با پنل های کنترلی مربوطه و دو المان HTML SPAN برای نمایش شمارش زمان اتمام Session میشود.

برای پنجره ی Modal من مشخص کرده ام.

۱ یک رویداد کنترل کننده ی OnOkScript که با تابعی از JavaScript بنام ResetSession تماس برقرار میکند زمانی که دکمه ی Yes کلیک شود.

۲ BehaviourID برای دسترسی به پنجره ی Modal با استفاده از JavaScript .

۳ دو دکمه ی Yes و No که یکی با OkControllD تنظیم شده است در حالی که دیگری به ترتیب CancleControlID تنظیم شده است.

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<h3>Session Idle:&nbsp;<span id="secondsIdle"></span>&nbsp;seconds.</h3>
<asp:LinkButton ID="lnkFake" runat="server" />
<asp:ModalPopupExtender ID="mpeTimeout" BehaviorID ="mpeTimeout" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkFake"
OkControlID="btnYes" CancelControlID="btnNo" BackgroundCssClass="modalBackground" OnOkScript = "ResetSession()">
</asp:ModalPopupExtender>
<asp:Panel ID="pnlPopup" runat="server" CssClass="modalPopup" Style="display: none">
<div class="header">
Session Expiring!
</div>
<div class="body">
Your Session will expire in&nbsp;<span id="seconds"></span>&nbsp;seconds.<br />
Do you want to reset?
</div>
<div class="footer" align="right">
<asp:Button ID="btnYes" runat="server" Text="Yes" CssClass="yes" />
<asp:Button ID="btnNo" runat="server" Text="No" CssClass="no" />
</div>
</asp:Panel>

 

 

فضا های نام

نیاز به وارد کردن فضاهای نام زیر دارید :

C#

using System.Configuration;
using System.Web.Configuration;

 VB.Net

Imports System.Configuration
Imports System.Web.Configuration

 تشخیص زمان اتمام Session از فایل Web.Config

کد های زیر ارزش موجود در Session Timeout را از فایل Web.Config میگیرد و سپس آن را به

SessionAlert تابع JavaScript پاس داده میشود که استفاده از تابع ClientScript گفته میشود.

 

C#

protected void Page_Load(object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    if (!this.IsPostBack)
    {
        Session["Reset"] = true;
        Configuration config = WebConfigurationManager.OpenWebConfiguration("~/Web.Config");
        SessionStateSection section = (SessionStateSection)config.GetSection("system.web/sessionState");
        int timeout = (int)section.Timeout.TotalMinutes * 1000 * 60;
        ClientScript.RegisterStartupScript(this.GetType(), "SessionAlert", "SessionExpireAlert(" + timeout + ");", true);
    }

VB.Net

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    Response.Cache.SetCacheability(HttpCacheability.NoCache)
    If Not Me.IsPostBack Then
        Session("Reset") = True
        Dim config As Configuration = WebConfigurationManager.OpenWebConfiguration("~/Web.Config")
        Dim section As SessionStateSection = DirectCast(config.GetSection("system.web/sessionState"), SessionStateSection)
        Dim timeout As Integer = CInt(section.Timeout.TotalMinutes) * 1000 * 60
        ClientScript.RegisterStartupScript(Me.GetType(), "SessionAlert", "SessionExpireAlert(" & timeout & ");", True)
    End If
End Sub

 برنامه نویسی در سمت کاربر

در زیر تابعی آورده شده است که مقدار Session Timeout را از سمت سرور میگیرد و سپس شمارنده ی آن را نمایش میدهد. زمانی که ۲۰ ثانیه برای Session Timeout باقی مانده باشد , پنجره ی AJAX Modal نمایش داده خواهد شد.

اگر کاربر بر روی کلید Yes در پنجره ی Modal کلیک کند , صفحه هدایت میشود و Session تازه میشود و اگر کاربر بر روی کلید No کلیک کند پنجره ی Modal به آسانی بسته خواهد شد.

به محض اتمام زمان استفاده ی Session , کاربر به صفحه ی Expired هدایت میشود.

<script type="text/javascript">
function SessionExpireAlert(timeout) {
var seconds = timeout / 1000;
document.getElementsByName("secondsIdle").innerHTML = seconds;
document.getElementsByName("seconds").innerHTML = seconds;
setInterval(function () {
seconds--;
document.getElementById("seconds").innerHTML = seconds;
document.getElementById("secondsIdle").innerHTML = seconds;
}, ۱۰۰۰);
setTimeout(function () {
//Show Popup before 20 seconds of timeout.
$find("mpeTimeout").show();
}, timeout - 20 * 1000);
setTimeout(function () {
window.location = "Expired.aspx";
}, timeout);
};
function ResetSession() {
//Redirect to refresh Session.
window.location = window.location.href;
}
</script>

 

Redirecting After Session end

  • پسورد: www.mspsoft.com
آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=14228
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

2 نظر در مورد هدایت خودکار کاربر پس از پایان یک Session در ASP.Net

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. با سلام
    ممنون مهندس جالب بود
    تمام بخش های سایتت رو زیر رو کردم !فک کنم ۳روزی شد تا بیشتر مقالات و آموزش هاتون رو خوندم!
    ممنون بخاطر تمام آموزش هاتون
    منو بیاد داشته باش!
    همه مقالات شیک و مجلسی بودن;-)

    ۱