CherryPy ওয়েব ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো Sessions এবং Cookies এর ব্যবস্থাপনা। সেশন এবং কুকি ব্যবস্থাপনা ব্যবহারকারীর স্টেট তথ্য সংরক্ষণ করার জন্য গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি লগইন সিস্টেম বা শপিং কার্টের মতো কার্যক্রম পরিচালনা করছেন।
CherryPy তে Session এবং Cookie ব্যবস্থাপনা
CherryPy তে সেশন এবং কুকি ব্যবস্থাপনা করার জন্য কিছু টুলস সরবরাহ করে, যেমন tools.sessions এবং tools.cookies। এটি সহজে সেশন এবং কুকি পরিচালনা করতে সহায়তা করে।
CherryPy তে Sessions ব্যবস্থাপনা
Session হলো একটি সার্ভার সাইড স্টোরেজ, যা ব্যবহারকারীর ডেটা সার্ভার থেকে ক্লায়েন্টের ব্রাউজারে সংরক্ষণ করা হয়। এটি সাধারণত একটি সেশন আইডি বা টোকেনের মাধ্যমে ব্যবহারকারীর ইনফরমেশন ট্র্যাক করতে ব্যবহৃত হয়।
CherryPy তে Sessions সক্রিয় করা
CherryPy তে সেশন ব্যবহার করার জন্য tools.sessions.on কনফিগারেশন সক্রিয় করতে হয়।
উদাহরণ: সেশন ব্যবস্থাপনা
import cherrypy
class SessionExample:
@cherrypy.expose
def index(self):
# সেশন থেকে নাম পুনরুদ্ধার করুন
name = cherrypy.session.get('name', 'অজানা')
return f"স্বাগতম, {name}!"
@cherrypy.expose
def set_name(self, name):
# সেশন সেট করা
cherrypy.session['name'] = name
return f"আপনার নাম সেশন এ সংরক্ষিত হয়েছে: {name}"
if __name__ == '__main__':
# সেশন সক্রিয় করা
cherrypy.config.update({'tools.sessions.on': True})
cherrypy.quickstart(SessionExample())
এখানে:
tools.sessions.on = True: সেশন ব্যবস্থাপনা সক্রিয় করা।cherrypy.session: সেশন থেকে ডেটা সেট এবং রিট্রিভ করতে ব্যবহৃত হয়।index: সেশন থেকে নাম পুনরুদ্ধার করে।set_name: ব্যবহারকারীর নাম সেশনে সেট করা হয়।
সেশন কনফিগারেশন:
CherryPy তে সেশন কনফিগার করার জন্য বিভিন্ন সেটিংস ব্যবহার করা যেতে পারে, যেমন সেশন ডিরেক্টরি এবং সেশন টাইমআউট।
cherrypy.config.update({
'tools.sessions.on': True,
'tools.sessions.timeout': 60 # সেশন টাইমআউট ১ ঘণ্টা
})
CherryPy তে Cookies ব্যবস্থাপনা
Cookies হলো ক্লায়েন্ট সাইড স্টোরেজ, যেখানে ডেটা ব্রাউজারে সংরক্ষিত থাকে এবং এটি সার্ভারে পাঠানো হয়। Cookies সাধারণত ব্যবহারকারীর পছন্দ এবং লগইন তথ্য সংরক্ষণ করতে ব্যবহৃত হয়।
উদাহরণ: কুকি ব্যবস্থাপনা
import cherrypy
class CookieExample:
@cherrypy.expose
def index(self):
# কুকি থেকে নাম পড়ুন
name = cherrypy.cookies.get('name', 'অজানা')
return f"স্বাগতম, {name}!"
@cherrypy.expose
def set_name(self, name):
# কুকি সেট করা
cherrypy.response.cookie['name'] = name
cherrypy.response.cookie['name']['path'] = '/'
return f"আপনার নাম কুকিতে সংরক্ষিত হয়েছে: {name}"
if __name__ == '__main__':
cherrypy.quickstart(CookieExample())
এখানে:
cherrypy.cookies.get(): কুকি থেকে ডেটা পড়া হয়।cherrypy.response.cookie: কুকি সেট করার জন্য ব্যবহৃত হয়।
কুকি কনফিগারেশন:
আপনি কুকির কিছু সেটিংস কনফিগার করতে পারেন যেমন কুকির মেয়াদ এবং পাথ:
cherrypy.response.cookie['name']['expires'] = 3600 # 1 ঘণ্টার জন্য কুকি
cherrypy.response.cookie['name']['path'] = '/' # সার্ভারের সব পাথের জন্য কুকি
সেশন এবং কুকি মধ্যে পার্থক্য
| বৈশিষ্ট্য | সেশন (Session) | কুকি (Cookie) |
|---|---|---|
| স্টোরেজ | সার্ভারে সংরক্ষিত | ক্লায়েন্টের ব্রাউজারে সংরক্ষিত |
| লাইফটাইম | সার্ভার সাইড সেশন টাইমআউট দ্বারা নির্ধারিত | কুকির মেয়াদ নির্দিষ্ট করা যেতে পারে |
| ব্যবহার | সাধারণত নিরাপত্তা এবং ডেটা স্টোরেজের জন্য | ছোট ডেটা স্টোরেজ এবং ব্রাউজার তথ্য ট্র্যাক করতে |
| ব্যবহারকারী অ্যাক্সেস | ব্যবহারকারী সরাসরি অ্যাক্সেস করতে পারে না | ব্যবহারকারী সরাসরি কুকিতে অ্যাক্সেস করতে পারে |
CherryPy তে Sessions এবং Cookies ব্যবস্থাপনা সহজ এবং কার্যকরভাবে পরিচালনা করা যায়। সেশন ব্যবহারকারীর ইনফরমেশন সার্ভারে সংরক্ষণ করতে সহায়তা করে, যা নিরাপদ এবং সেশন টাইমআউটের মাধ্যমে অপ্রয়োজনীয় সেশন ডেটা মুছে ফেলা যায়। অন্যদিকে, কুকি ক্লায়েন্ট সাইডে ডেটা সংরক্ষণ করে এবং এটি ইউজারের ব্রাউজারে সংরক্ষিত থাকে, যা সাইটের পছন্দ এবং ট্র্যাকিংয়ের জন্য উপযোগী।
Sessions কি?
Session (সেশন) হল একটি টেম্পোরারি ডেটা স্টোরেজ ব্যবস্থা যা ব্যবহারকারীর অনলাইন কার্যক্রম ট্র্যাক করতে ব্যবহৃত হয়। ওয়েব অ্যাপ্লিকেশনগুলিতে, সেশন ব্যবহারকারীর অনুরোধের মধ্যে ডেটা সংরক্ষণ করতে এবং ট্র্যাক করতে সহায়তা করে। এই ডেটাগুলি সাধারণত সার্ভারে সংরক্ষিত থাকে এবং ব্যবহারকারী যখন আবার একই ওয়েবসাইটে ফিরে আসে, তখন তাদের তথ্য পুনরুদ্ধার করা যায়।
CherryPy তে সেশন ব্যবহারের মাধ্যমে আপনি ব্যবহারকারীর সাথে সম্পর্কিত তথ্য যেমন লগইন স্ট্যাটাস, পছন্দের সেটিংস, বা অন্যান্য ডেটা সংরক্ষণ এবং ট্র্যাক করতে পারেন।
CherryPy তে Sessions এর ব্যবহার
CherryPy তে সেশন ব্যবস্থাপনা জন্য একটি Session Tool সরবরাহ করা হয়, যা ব্যবহারকারী থেকে একটি ইউনিক সেশন আইডি গ্রহণ করে এবং ওই সেশনের সাথে সম্পর্কিত ডেটা সংরক্ষণ করতে সাহায্য করে।
সাধারণত সেশন আইডি কুকির মাধ্যমে ব্যবহারকারীর ব্রাউজারে পাঠানো হয় এবং তা আবার সার্ভারে ব্যবহারকারীর সেশন ডেটা নিয়ে আসে।
CherryPy তে Sessions কিভাবে কাজ করে?
CherryPy তে সেশন ব্যবহারের জন্য আপনি tools.sessions.on কনফিগারেশন সেটিং ব্যবহার করতে পারেন। যখন সেশন সক্রিয় করা হয়, তখন ব্যবহারকারীর রিকোয়েস্টের সাথে সেশন ডেটা সংরক্ষণ করা সম্ভব হয় এবং পরবর্তী রিকোয়েস্টে সেই ডেটা পুনরুদ্ধার করা যায়।
সেশন ব্যবহারের উদাহরণ
নিচে একটি সহজ উদাহরণ দেওয়া হল যেখানে একটি ব্যবহারকারীর নাম সেশন ডেটায় সংরক্ষণ করা হচ্ছে এবং সেই নামকে পরবর্তী রিকোয়েস্টে প্রদর্শন করা হচ্ছে।
উদাহরণ: CherryPy তে সেশন ব্যবহার
import cherrypy
class SessionExample:
@cherrypy.expose
def index(self):
# সেশন থেকে ব্যবহারকারীর নাম পড়ুন, যদি না থাকে তবে ডিফল্ট টেক্সট দেখান
username = cherrypy.session.get('username', None)
if username:
return f"স্বাগতম, {username}!"
else:
return '''
<html>
<body>
<h2>নাম প্রদান করুন:</h2>
<form method="POST" action="/set_username">
নাম: <input type="text" name="username" />
<input type="submit" value="সাবমিট করুন" />
</form>
</body>
</html>
'''
@cherrypy.expose
def set_username(self, username):
# সেশন সেট করা হচ্ছে
cherrypy.session['username'] = username
return f"আপনার নাম {username} সফলভাবে সেভ করা হয়েছে।"
if __name__ == '__main__':
cherrypy.config.update({
'tools.sessions.on': True, # সেশন চালু করা হচ্ছে
'tools.sessions.timeout': 60 # সেশনের টাইমআউট (60 সেকেন্ড)
})
cherrypy.quickstart(SessionExample())
কোড ব্যাখ্যা:
@cherrypy.expose:index()মেথড রুট পাথ/তে সেশন ডেটার মধ্যে ব্যবহারকারীর নাম দেখায়, যদি সেটি পাওয়া যায়।- যদি নাম পাওয়া না যায়, একটি HTML ফর্ম প্রদর্শিত হয় যা ব্যবহারকারীকে তার নাম ইনপুট করতে বলে।
cherrypy.session:cherrypy.sessionডিকশনারির মতো কাজ করে, যেখানে সেশন ডেটা রাখা হয়। এখানে, ব্যবহারকারীর নামsession['username']এ সংরক্ষিত হয়।- সেশনকে timeout (অপেক্ষা সময়) সেট করা যেতে পারে। যেমন, এই উদাহরণে সেশনের টাইমআউট 60 সেকেন্ড।
set_username():- এই মেথড ব্যবহারকারীর নাম গ্রহণ করে এবং সেটিকে সেশন ডেটায় সংরক্ষণ করে।
সেশন কেন ব্যবহার করবেন?
সেশন ব্যবহারের কিছু প্রধান সুবিধা হলো:
- ব্যবহারকারীর ডেটা ট্র্যাক করা:
- সেশন ব্যবহারকারীর লগইন তথ্য, পছন্দের সেটিংস বা অন্যান্য ডেটা ট্র্যাক করতে সহায়তা করে। এটি একটি ক্লায়েন্টের জন্য ভিন্ন ভিন্ন তথ্য সংরক্ষণ করার সুবিধা দেয়, যা সার্ভারের মধ্যে সুরক্ষিত থাকে।
- স্টেটফুল ওয়েব অ্যাপ্লিকেশন:
- HTTP প্রোটোকল হল স্টেটলেস, অর্থাৎ প্রতিটি রিকোয়েস্ট আলাদা। সেশন ব্যবহার করে, আপনি স্টেটফুল অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে একটি ব্যবহারকারীর পূর্ববর্তী রিকোয়েস্টের তথ্য সংরক্ষিত থাকে।
- ব্যবহারকারী অভিজ্ঞতা উন্নত করা:
- সেশন ব্যবহারের মাধ্যমে আপনি ব্যবহারকারীর ইন্টারঅ্যাকশনের উপর ভিত্তি করে পছন্দ ও সেটিংস রাখতে পারেন, যেমন "প্রোফাইল পছন্দ", "থিম সিলেকশন", "লগইন অবস্থান" ইত্যাদি।
- কাস্টমাইজড এবং পার্সোনালাইজড অভিজ্ঞতা:
- সেশন ব্যবহার করে, আপনি ব্যবহারকারীর নাম, আগের পরিদর্শন করা পেজ, এবং অন্যান্য ব্যক্তিগত তথ্য সংরক্ষণ করতে পারেন, যাতে পরবর্তী ভিজিটে সেই তথ্য ব্যবহারকারীর জন্য প্রদর্শন করতে পারেন।
- সিকিউরিটি:
- সেশন ব্যবহারের মাধ্যমে আপনি ব্যবহারকারীর লগইন স্ট্যাটাস, অ্যাক্সেস নিয়ন্ত্রণ এবং অন্যান্য সিকিউরিটি ফিচার পরিচালনা করতে পারেন, যা ওয়েব অ্যাপ্লিকেশনকে নিরাপদ রাখে।
CherryPy তে সেশন ব্যবহারের মাধ্যমে আপনি ব্যবহারকারীর ডেটা সহজে ট্র্যাক এবং সংরক্ষণ করতে পারেন। সেশন এর সাহায্যে আপনি স্টেটফুল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে ব্যবহারকারীর ইনপুট এবং আচরণ পরবর্তী রিকোয়েস্টগুলিতে সংরক্ষিত থাকে। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং ওয়েব অ্যাপ্লিকেশনকে আরও পার্সোনালাইজড ও ইন্টারঅ্যাকটিভ করে তোলে।
CherryPy তে Session Management হল এমন একটি ফিচার, যার মাধ্যমে ইউজারের ইনপুট এবং ডেটা সাময়িকভাবে সেভ করা যায়। সেশন ব্যবহার করে বিভিন্ন পেজ বা রিকোয়েস্টে ডেটা শেয়ার করা যায়, যাতে একবার লগ ইন করার পর একই ইউজারের তথ্য একাধিক পেজে প্রাপ্ত হয়। সেশন ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ যখন আপনি ইউজারের অবস্থান ট্র্যাক করতে চান, যেমন লগ ইন স্টেটাস, ইউজার পছন্দ বা অন্য কোনো ডেটা।
CherryPy তে সেশন ব্যবস্থাপনা (Session Management)
CherryPy তে সেশন ব্যবস্থাপনা সহজ। সেশন টুলস tools.sessions ব্যবহার করে সক্রিয় করা হয়। সেশন টুলস ডিফল্টভাবে কোডে নির্দিষ্ট সেটিংসের মাধ্যমে ব্যবহার করা যায় এবং সেশন ডেটা সংরক্ষণ করার জন্য বিভিন্ন পদ্ধতি রয়েছে।
CherryPy তে সেশন সক্রিয় করা
সেশন সক্রিয় করার জন্য আপনাকে প্রথমে tools.sessions.on কনফিগারেশনকে True করতে হবে। এর ফলে, CherryPy অ্যাপ্লিকেশন সেশনের জন্য প্রয়োজনীয় কুকি তৈরি করবে এবং সেশন ডেটা সংরক্ষণ করবে।
সেশন সক্রিয় করার উদাহরণ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return '''
<html>
<body>
<form method="post" action="/submit">
<label for="name">নাম:</label>
<input type="text" name="name" id="name"><br><br>
<input type="submit" value="জমা দিন">
</form>
</body>
</html>
'''
@cherrypy.expose
def submit(self, name):
cherrypy.session['name'] = name # সেশন ডেটা সংরক্ষণ
return f"আপনার নাম {name} সেশন এ সংরক্ষিত হয়েছে!"
@cherrypy.expose
def show_session(self):
if 'name' in cherrypy.session:
return f"সেশন থেকে নাম: {cherrypy.session['name']}"
return "সেশন থেকে কোনো তথ্য পাওয়া যায়নি।"
if __name__ == '__main__':
cherrypy.config.update({'tools.sessions.on': True}) # সেশন চালু
cherrypy.quickstart(MyApp())
ব্যাখ্যা:
tools.sessions.on = True: এটি সেশন ব্যবস্থাপনা চালু করে।cherrypy.session: সেশন ডেটা সংরক্ষণ এবং অ্যাক্সেস করার জন্য ব্যবহার করা হয়। এখানেnameডেটা সেশন ভেরিয়েবল হিসেবে সংরক্ষণ করা হয়েছে।
সেশন থেকে ডেটা রিড ও ডিলিট করা
CherryPy তে সেশন থেকে ডেটা রিড ও ডিলিট করার সুবিধাও রয়েছে। আপনি সেশন ভেরিয়েবল থেকে ডেটা রিড করতে পারেন এবং সেশন ভেরিয়েবল মুছে ফেলতে পারেন।
উদাহরণ:
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return '''
<html>
<body>
<form method="post" action="/submit">
<label for="name">নাম:</label>
<input type="text" name="name" id="name"><br><br>
<input type="submit" value="জমা দিন">
</form>
</body>
</html>
'''
@cherrypy.expose
def submit(self, name):
cherrypy.session['name'] = name # সেশন ডেটা সংরক্ষণ
return f"আপনার নাম {name} সেশন এ সংরক্ষিত হয়েছে!"
@cherrypy.expose
def show_session(self):
if 'name' in cherrypy.session:
return f"সেশন থেকে নাম: {cherrypy.session['name']}"
return "সেশন থেকে কোনো তথ্য পাওয়া যায়নি।"
@cherrypy.expose
def delete_session(self):
if 'name' in cherrypy.session:
del cherrypy.session['name'] # সেশন থেকে ডেটা মুছে ফেলা
return "সেশন ডেটা মুছে ফেলা হয়েছে!"
return "সেশন ডেটা পূর্বে সংরক্ষিত ছিল না।"
if __name__ == '__main__':
cherrypy.config.update({'tools.sessions.on': True}) # সেশন চালু
cherrypy.quickstart(MyApp())
এখানে delete_session মেথডটি সেশন থেকে ডেটা মুছে ফেলে। যখন ব্যবহারকারী এই পৃষ্ঠাটি অ্যাক্সেস করবেন, তখন সেশন থেকে name ডেটা মুছে যাবে।
সেশনের মেয়াদ (Session Expiration)
CherryPy তে সেশনের মেয়াদ কনফিগার করা যায়, যার মাধ্যমে একটি নির্দিষ্ট সময় পর সেশন স্বয়ংক্রিয়ভাবে মুছে যাবে। সেশন মেয়াদ নির্ধারণ করতে tools.sessions.timeout কনফিগারেশন ব্যবহার করা হয়।
উদাহরণ: সেশনের মেয়াদ নির্ধারণ
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return '''
<html>
<body>
<form method="post" action="/submit">
<label for="name">নাম:</label>
<input type="text" name="name" id="name"><br><br>
<input type="submit" value="জমা দিন">
</form>
</body>
</html>
'''
@cherrypy.expose
def submit(self, name):
cherrypy.session['name'] = name
return f"আপনার নাম {name} সেশন এ সংরক্ষিত হয়েছে!"
@cherrypy.expose
def show_session(self):
if 'name' in cherrypy.session:
return f"সেশন থেকে নাম: {cherrypy.session['name']}"
return "সেশন থেকে কোনো তথ্য পাওয়া যায়নি।"
if __name__ == '__main__':
cherrypy.config.update({
'tools.sessions.on': True, # সেশন চালু
'tools.sessions.timeout': 60 # সেশনের মেয়াদ ৬০ সেকেন্ড
})
cherrypy.quickstart(MyApp())
এখানে tools.sessions.timeout ৬০ সেকেন্ড নির্ধারণ করা হয়েছে, যার মানে হলো সেশন ৬০ সেকেন্ড পর মুছে যাবে।
সেশন কুকি কনফিগারেশন
CherryPy তে সেশন কুকি কনফিগারেশন করা যায়, যা কুকির বয়স, পাথ এবং সিকিউরিটি সেটিংস নিয়ন্ত্রণ করতে সাহায্য করে। সেশন কুকি কনফিগার করার জন্য tools.sessions.cookie_path, tools.sessions.cookie_domain, এবং tools.sessions.cookie_max_age ব্যবহার করা হয়।
উদাহরণ: সেশন কুকি কনফিগারেশন
import cherrypy
class MyApp:
@cherrypy.expose
def index(self):
return '''
<html>
<body>
<form method="post" action="/submit">
<label for="name">নাম:</label>
<input type="text" name="name" id="name"><br><br>
<input type="submit" value="জমা দিন">
</form>
</body>
</html>
'''
@cherrypy.expose
def submit(self, name):
cherrypy.session['name'] = name
return f"আপনার নাম {name} সেশন এ সংরক্ষিত হয়েছে!"
if __name__ == '__main__':
cherrypy.config.update({
'tools.sessions.on': True,
'tools.sessions.cookie_path': '/', # কুকির পাথ
'tools.sessions.cookie_max_age': 3600, # কুকির ম্যাক্স এজ (১ ঘণ্টা)
'tools.sessions.cookie_domain': '.example.com' # কুকির ডোমেন
})
cherrypy.quickstart(MyApp())
CherryPy তে সেশন ব্যবস্থাপনা সহজ এবং কার্যকরী। tools.sessions.on ব্যবহার করে সেশন চালু করা হয় এবং সেশন থেকে ডেটা সংরক্ষণ, রিড, এবং ডিলিট করা যায়। এছাড়া সেশনের মেয়াদ এবং কুকি কনফিগারেশনও খুব সহজে সেট করা যায়। CherryPy এর সেশন ব্যবস্থাপনা আপনাকে ইউজারের ইনপুট এবং ডেটা সাময়িকভাবে সংরক্ষণ করার সুবিধা দেয়, যা ডায়নামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
CherryPy একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক যা Cookies ব্যবস্থাপনা সহজ করে তোলে। Cookies হলো ছোট তথ্যের অংশ যা ওয়েব ব্রাউজার এবং সার্ভারের মধ্যে আদান-প্রদান করা হয়। এগুলি সাধারণত ইউজারের সেশন সংরক্ষণ, পছন্দসই সেটিংস বা অন্যান্য তথ্য সংরক্ষণের জন্য ব্যবহৃত হয়।
CherryPy তে Cookies তৈরি এবং সংরক্ষণ করার জন্য আপনি cherrypy.response.cookie অবজেক্ট ব্যবহার করতে পারেন। এই অবজেক্টটি আপনাকে কুকি সেট, কুকি পড়া এবং কুকি মুছতে সাহায্য করে।
Cookies তৈরি এবং সংরক্ষণ করা
CherryPy তে কুকি তৈরি করা এবং সেটি সংরক্ষণ করা বেশ সহজ। আপনি cherrypy.response.cookie ব্যবহার করে কুকি তৈরি ও সেট করতে পারেন। নিচে কুকি তৈরি এবং সংরক্ষণের উদাহরণ দেওয়া হলো।
উদাহরণ: একটি সাধারণ কুকি তৈরি এবং সেট করা
import cherrypy
class CookieApp:
@cherrypy.expose
def index(self):
# কুকি তৈরি এবং সেট করা
cherrypy.response.cookie['user'] = 'john_doe'
cherrypy.response.cookie['user']['path'] = '/' # কুকি যেকোনো পাথে কাজ করবে
cherrypy.response.cookie['user']['max-age'] = 3600 # কুকি এক ঘন্টা পর্যন্ত থাকবে
return "কুকি 'user' তৈরি এবং সেট করা হয়েছে।"
if __name__ == '__main__':
cherrypy.quickstart(CookieApp())
এখানে:
cherrypy.response.cookie['user'] = 'john_doe': এখানেuserনামক কুকি তৈরি করা হয়েছে, যার মানjohn_doe।max-age: কুকি একটি নির্দিষ্ট সময় পর্যন্ত থাকে, এখানে সেট করা হয়েছে ১ ঘন্টা (৩৬০০ সেকেন্ড)।path: কুকি ব্যবহার করার জন্য যেকোনো পাথ (যেমন/পুরো সাইটে) ব্যবহার করা যেতে পারে।
Cookies পড়া
একবার কুকি সেট করার পর, আপনি সহজেই কুকি পড়তে পারেন। CherryPy তে কুকি পড়তে cherrypy.request.cookie ব্যবহার করতে হয়।
উদাহরণ: কুকি পড়া
import cherrypy
class CookieApp:
@cherrypy.expose
def index(self):
# কুকি থেকে ডেটা পড়া
user_cookie = cherrypy.request.cookie.get('user', None)
if user_cookie:
return f"আপনার কুকি রয়েছে! কুকির মান: {user_cookie.value}"
else:
return "কোনও কুকি পাওয়া যায়নি!"
if __name__ == '__main__':
cherrypy.quickstart(CookieApp())
এখানে:
cherrypy.request.cookie.get('user', None): কুকি থেকেuserনামক কুকি পড়া হচ্ছে।- যদি কুকি পাওয়া যায়, তবে তার মান দেখানো হবে। যদি কুকি না থাকে, তবে "কোনও কুকি পাওয়া যায়নি!" বার্তা দেখানো হবে।
Cookies মুছে ফেলা
CherryPy তে কুকি মুছতে cherrypy.response.cookie অবজেক্ট ব্যবহার করে কুকির expires অ্যাট্রিবিউটকে অতীতের একটি তারিখে সেট করতে হয়।
উদাহরণ: কুকি মুছে ফেলা
import cherrypy
class CookieApp:
@cherrypy.expose
def index(self):
# কুকি মুছে ফেলা
cherrypy.response.cookie['user'] = ''
cherrypy.response.cookie['user']['expires'] = 'Thu, 01 Jan 1970 00:00:00 GMT'
return "কুকি 'user' মুছে ফেলা হয়েছে।"
if __name__ == '__main__':
cherrypy.quickstart(CookieApp())
এখানে:
cherrypy.response.cookie['user'] = '': কুকির মান শূন্য সেট করা হচ্ছে।expires: কুকির মেয়াদ শেষ করার জন্য এটি অতীতের একটি তারিখে সেট করা হচ্ছে।
Secure এবং HttpOnly কুকি
CherryPy তে আপনি Secure এবং HttpOnly কুকি সেট করতে পারেন:
- Secure কুকি শুধুমাত্র HTTPS সংযোগে পাঠানো হয়।
- HttpOnly কুকি শুধুমাত্র সার্ভার দ্বারা অ্যাক্সেসযোগ্য থাকে, এটি ক্লায়েন্ট সাইড জাভাস্ক্রিপ্ট দ্বারা অ্যাক্সেস করা যায় না।
উদাহরণ: Secure এবং HttpOnly কুকি
import cherrypy
class CookieApp:
@cherrypy.expose
def index(self):
# Secure এবং HttpOnly কুকি সেট করা
cherrypy.response.cookie['secure_user'] = 'john_doe'
cherrypy.response.cookie['secure_user']['path'] = '/'
cherrypy.response.cookie['secure_user']['secure'] = True # Secure কুকি
cherrypy.response.cookie['secure_user']['httponly'] = True # HttpOnly কুকি
return "Secure এবং HttpOnly কুকি তৈরি করা হয়েছে।"
if __name__ == '__main__':
cherrypy.quickstart(CookieApp())
এখানে:
secure: কুকি শুধুমাত্র HTTPS সংযোগের মাধ্যমে পাঠানো হবে।httponly: কুকি শুধুমাত্র সার্ভার সাইডে অ্যাক্সেসযোগ্য থাকবে।
CherryPy তে কুকি তৈরি, সংরক্ষণ, পড়া এবং মুছে ফেলা খুবই সহজ। আপনি কুকির মাধ্যমে ইউজারের সেশন, পছন্দসই সেটিংস, এবং অন্যান্য তথ্য সংরক্ষণ করতে পারেন। CherryPy এর কুকি ব্যবস্থাপনা ফিচার নিরাপদ এবং কার্যকরী, এবং আপনি কুকি নিরাপত্তার জন্য secure এবং HttpOnly ফ্ল্যাগ ব্যবহার করতে পারেন।
CherryPy তে Session Persistence এবং Security গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন আপনি ব্যবহারকারী তথ্য সংরক্ষণ এবং নিরাপত্তা বজায় রাখতে চান। CherryPy এর সেশন ব্যবস্থাপনা ব্যবহারকারীদের সেশন তথ্য ধরে রাখতে সহায়ক, এবং এর সিকিউরিটি ফিচারগুলি ওয়েব অ্যাপ্লিকেশনগুলিকে সুরক্ষিত করতে সাহায্য করে। এখানে Session Persistence এবং Security এর ব্যবহারের বিস্তারিত আলোচনা করা হলো।
CherryPy তে Session Persistence
Session Persistence হল ব্যবহারকারীর সেশন ডেটা ধ্বংস না করে যতটুকু সময় ব্যবহারকারী অ্যাপ্লিকেশন ব্যবহার করছেন ততটুকু সময় পর্যন্ত তথ্য সংরক্ষণ করা। CherryPy সেশন ম্যানেজমেন্টের জন্য tools.sessions ব্যবহার করে, যা কুকি ফাইল বা সার্ভারে সেশন ডেটা সংরক্ষণ করে।
CherryPy তে Session Persistence এর জন্য সেশন কনফিগারেশন
CherryPy তে সেশন ব্যবহারের জন্য tools.sessions.on সক্রিয় করতে হয়। সেশন কুকি নির্দিষ্ট সময় পর্যন্ত ধরে রাখার জন্য tools.sessions.timeout ব্যবহার করা হয়।
উদাহরণ: Session Persistence
import cherrypy
class SessionApp:
@cherrypy.expose
def index(self):
if 'username' in cherrypy.session:
return f"স্বাগতম, {cherrypy.session['username']}!"
else:
return '''
<html>
<body>
<form method="POST" action="/login">
ইউজারনেম: <input type="text" name="username" required><br><br>
<input type="submit" value="লগইন">
</form>
</body>
</html>
'''
@cherrypy.expose
def login(self, username):
cherrypy.session['username'] = username
return f"স্বাগতম, {username}!"
if __name__ == '__main__':
cherrypy.config.update({'tools.sessions.on': True, 'tools.sessions.timeout': 60})
cherrypy.quickstart(SessionApp())
কোড ব্যাখ্যা:
tools.sessions.on: সেশন চালু করা হয়।tools.sessions.timeout: সেশন টাইমআউট সেট করা হয় (এখানে 60 সেকেন্ড)।cherrypy.session['username']: ইউজারের সেশন এ নাম সংরক্ষণ করা হয়।indexমেথড: ইউজার যদি লগইন করে থাকে, তবে তার নাম সেশন থেকে বের করে দেখানো হয়।
এখন, যদি আপনি ইউজারনেম দিয়ে লগইন করেন এবং সেশন সেভ হয়, আপনি একই সেশনে থাকার সময় ইউজারের নাম দেখতে পাবেন।
CherryPy তে Security
CherryPy তে নিরাপত্তা ব্যবস্থাপনা গুরুত্বপূর্ণ, বিশেষ করে ওয়েব অ্যাপ্লিকেশনে লগইন সিস্টেম, ডেটা এনক্রিপশন, HTTP নিরাপত্তা এবং অথেনটিকেশন নিশ্চিত করার জন্য। CherryPy কিছু নিরাপত্তা টুলস প্রদান করে যা সেশন এবং অন্যান্য নিরাপত্তা ফিচারগুলিকে আরও উন্নত করে।
CherryPy তে সাধারণ সিকিউরিটি টুলস:
- HTTPS: CherryPy HTTPS সমর্থন করে, যা নিরাপদ সংযোগ প্রদান করে।
- CSRF Protection: CherryPy সিকিউরিটি টুলস CSRF (Cross-Site Request Forgery) সুরক্ষা প্রদান করে।
- Authentication: CherryPy ব্যবহারকারী অথেনটিকেশন ব্যবস্থাপনা সমর্থন করে।
CherryPy তে HTTPS সক্রিয় করা
CherryPy তে HTTPS সক্রিয় করতে, আপনাকে SSL সার্টিফিকেট কনফিগার করতে হবে। এটি নিরাপদ সংযোগ নিশ্চিত করে, যা ব্যবহারকারীর তথ্য এনক্রিপ্ট করে।
HTTPS কনফিগারেশন উদাহরণ:
import cherrypy
import ssl
class SecureApp:
@cherrypy.expose
def index(self):
return "HTTPS সংযোগের মাধ্যমে সুরক্ষিত অ্যাপ!"
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
'server.ssl_module': 'builtin',
'server.ssl_certificate': 'server.crt', # SSL সার্টিফিকেট
'server.ssl_private_key': 'server.key' # SSL প্রাইভেট কি
})
cherrypy.quickstart(SecureApp())
কোড ব্যাখ্যা:
server.ssl_module: SSL সক্রিয় করতে ব্যবহার করা হয়।server.ssl_certificate: SSL সার্টিফিকেটের পাথ।server.ssl_private_key: প্রাইভেট কি এর পাথ।
এটি HTTPS সক্রিয় করবে, যাতে ব্যবহারকারীর তথ্য সুরক্ষিতভাবে ট্রান্সফার হয়।
CherryPy তে Authentication
CherryPy তে ইউজার অথেনটিকেশন ব্যবস্থাপনা সম্ভব, যা সঠিকভাবে লগইন করতে ব্যবহার করা হয়। CherryPy তে Basic Authentication অথবা Custom Authentication ব্যবহার করা যেতে পারে।
Basic Authentication উদাহরণ:
import cherrypy
from cherrypy.lib import static
class AuthApp:
@cherrypy.expose
def index(self):
return "স্বাগতম লগইন করা ব্যবহারকারী!"
@cherrypy.expose
def login(self):
return '''
<html>
<body>
<form method="POST" action="/validate">
ইউজারনেম: <input type="text" name="username"><br>
পাসওয়ার্ড: <input type="password" name="password"><br>
<input type="submit" value="লগইন">
</form>
</body>
</html>
'''
@cherrypy.expose
def validate(self, username, password):
if username == "admin" and password == "password":
return "লগইন সফল।"
else:
return "অবৈধ ইউজারনেম বা পাসওয়ার্ড।"
if __name__ == '__main__':
cherrypy.config.update({'tools.sessions.on': True})
cherrypy.quickstart(AuthApp())
কোড ব্যাখ্যা:
login: ইউজারনেম এবং পাসওয়ার্ড ইনপুট করার জন্য একটি ফর্ম প্রদান করা হয়।validate: ইউজারের তথ্য যাচাই করে সঠিক হলে লগইন সফল এবং ভুল হলে ত্রুটি বার্তা দেখানো হয়।
CherryPy তে CSRF Protection
CSRF (Cross-Site Request Forgery) হল এমন একটি আক্রমণ যেখানে একটি ম্যালিসিয়াস ব্যবহারকারী বৈধ ইউজারের হয়ে অবৈধ রিকোয়েস্ট পাঠাতে পারে। CherryPy তে CSRF সুরক্ষা যোগ করতে, আপনি টোকেন ব্যবহার করতে পারেন যা রিকোয়েস্টের সাথে থাকে এবং নিশ্চিত করে যে রিকোয়েস্টটি বৈধ।
CherryPy তে Session Persistence এবং Security ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ। CherryPy এর সেশন ব্যবস্থাপনা ব্যবহারকারীর তথ্য সংরক্ষণ করতে সহায়ক, এবং এর সিকিউরিটি ফিচারগুলি ওয়েব অ্যাপ্লিকেশনগুলিকে সুরক্ষিত করতে সাহায্য করে। HTTPS সক্রিয় করা, সেশন সুরক্ষা, এবং অথেনটিকেশন ব্যবস্থাপনা CherryPy কে একটি সুরক্ষিত এবং কার্যকরী ওয়েব ফ্রেমওয়ার্ক হিসেবে তৈরি করে।
Read more