این بخش موضوعات زیر را پوشش می دهد:
امنیت
یک منبع داده می تواند در یکی از دو حالت دسترسی به شرح زیر عمل کند:
در حالت دسترسی محدود، که پیشفرض است، یک منبع داده فقط درخواستهایی را ارائه میکند که از همان دامنهای که منبع داده در آن قرار دارد، منشأ میگیرند. حالت محدود از حملات جعل درخواست بین سایتی (XSRF) جلوگیری می کند و بنابراین از حالت دسترسی نامحدود ایمن تر است. از آنجایی که کتابخانه منبع داده رابطی را فقط برای بازگرداندن داده ها و نه برای تغییر وضعیت یا داده ها در سمت سرور فراهم می کند، فقط حملات XSRF که سعی در سرقت داده ها دارند امکان پذیر است. برای ایمنسازی منبع دادهتان در برابر تلاشها برای سرقت دادهها، حالت محدود باید همراه با احراز هویت مبتنی بر کوکی استفاده شود. روش احراز هویت کاربران به محیط و پیاده سازی شما بستگی دارد.
در حالت دسترسی نامحدود، یک منبع داده به همه درخواستها بدون در نظر گرفتن منشأ آنها پاسخ میدهد. منبع داده ای که در حالت نامحدود اجرا می شود را می توان با احراز هویت مبتنی بر کوکی محافظت کرد، اما توجه داشته باشید که منبع داده در برابر حملات XSRF آسیب پذیر خواهد بود. اگر تجسمها در صفحات وب خارج از دامنه منبع داده نیاز به دسترسی به منبع داده دارند، یا اگر دادهها در دامنه عمومی هستند و بنابراین نیازی به محافظت ندارند، از حالت نامحدود استفاده کنید.
یک درخواست تجسم میتواند فرمت پاسخ JSON، CSV، یا HTML را مشخص کند. فرمت پاسخ، فرمتی را تعیین می کند که منبع داده، جدول داده را برمی گرداند. از آنجایی که فرمتهای CSV و HTML در برابر حملات XSRF آسیبپذیر نیستند، میتوان از دامنههای دیگر، حتی در حالت محدود، به آنها دسترسی داشت.
برای تعیین حالت نامحدود، isRestrictedAccessMode()
را به صورت زیر لغو کنید:
@Override protected boolean isRestrictedAccessMode() { return false; }
برای سادگی، تمام نمونه های ارائه شده با کتابخانه در حالت دسترسی نامحدود اجرا می شوند.
خطاها و هشدارها
هنگامی که امکان یا مطلوب نیست، یک جدول داده معتبر را برگردانید، کتابخانه یک
DataSourceException
می اندازد. به عنوان مثال اگر کاربر نمی تواند احراز هویت شود. کتابخانه این استثناها را زمانی که خطاها مانع از ایجاد جدول داده می شود را ایجاد می کند. ممکن است بخواهید در موقعیتهایی که منحصر به منبع داده شما هستند، استثناء ایجاد کنید. اگر چنین است، انواع استثنای خطای خود را با ارث بردن از کلاس DataSourceException
ایجاد کنید. همچنین می توانید کلاس DataSourceException
را مستقیماً پرتاب کنید.
کلاس DataSourceException
در بسته base
قرار دارد و پارامترهای زیر را می گیرد:
-
ReasonType
این پارامتر اجباری است. انواع دلایل موجود در فهرستReasonType
تعریف شده است. اگر هیچ یک از انواع دلایل موجود مناسب نیست، می توانید ازOther
یاInternal
استفاده کنید. -
MessageToUser
این پارامتر متن پیام خطا را مشخص می کند. در بیشتر موارد، به عنوان یک راهنمای ابزار به کاربر نمایش داده می شود، بنابراین مهم است که اطلاعات فنی یا محرمانه درج نشود.
می توانید از مجموعه توابع کمکی در datasource.DataSourceHelper
برای رسیدگی به خطاها استفاده کنید. در این مورد دو تابع را با نام یکسان setErrorServletResponse
فراخوانی کنید تا یک DataSourceException
گرفته شود و یک خطا در پاسخ سرولت داده تنظیم شود. یکی از این توابع درخواست منبع داده را می گیرد، دیگری HttpServlet request
می گیرد و در مواردی استفاده می شود که ایجاد DataSourceRequest
ناموفق باشد. یک نمونه پیادهسازی در تعریف قابلیتها و جریان رویدادها ارائه شده است.
اگر امکان برگرداندن جدول داده وجود نداشته باشد، کتابخانه یک خطا برمی گرداند. اگر امکان برگرداندن یک جدول داده وجود داشته باشد، اما مشکلی برای گزارش وجود داشته باشد، کتابخانه یک هشدار را همراه با جدول داده برمی گرداند. به عنوان مثال، کتابخانه در شرایط زیر یک هشدار ایجاد می کند:
- اگر تجسم پرس و جو یک
LIMIT
فراهم کند که منجر به داده های کوتاه شده شود. - اگر یک تجسم پرس و جو یک الگوی قالب بندی نامعتبر در یک عبارت
FORMAT
درخواست کند.
برای اضافه کردن هشدار خود، یک نمونه از base.Warning
ایجاد کنید و با استفاده از متد addWarning()
آن را به جدول دادههای خود اضافه کنید.
ورود به سیستم
این کتابخانه از ثبت گزارش مشترک جاکارتا استفاده می کند. ورود به سیستم عام جاکارتا را می توان با اکثر سیستم های گزارش گیری رایج که ممکن است قبلاً در جای خود داشته باشید استفاده کرد. اگر سیستم ورود به سیستم شما غیر استاندارد است، ممکن است نیاز به نوشتن یک آداپتور داشته باشید. برای جزئیات بیشتر، به صفحه اصلی ثبت نام عوام جاکارتا مراجعه کنید.
هنگامی که یک استثنا پرتاب می شود اطلاعات به گزارش ارسال می شود. نحوه دسترسی شما به گزارش به سیستم ثبت گزارشی که استفاده می کنید بستگی دارد.