implementing_user_authentication
implementing_user_authentication
login, logout, and maintaining their state across requests. Django’s built-in au-
thentication system simplifies this process using session management under the
hood.
Here’s a step-by-step explanation of how to use sessions for user authentication
in Django:
2. Login Implementation
Django provides the authenticate() and login() methods to handle user
authentication and session creation.
def login_view(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
1
HTML Template
<form method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<button type="submit">Login</button>
</form>
4. Logout Implementation
To log out a user and clear the session, use Django’s logout() method.
def logout_view(request):
logout(request) # Clears the session
return redirect('login')
2
5. Checking Authentication Status
To verify if a user is authenticated, use request.user.is_authenticated.
Example
from django.http import JsonResponse
def profile_view(request):
if request.user.is_authenticated:
return JsonResponse({
'username': request.user.username,
'email': request.user.email,
'role': request.session.get('user_role', 'user')
})
else:
return JsonResponse({'error': 'User not logged in'}, status=401)
Example
from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
3
Clearing Sessions Manually You can clear session data when logging out:
from django.contrib.sessions.models import Session
def clear_all_sessions(user):
sessions = Session.objects.filter(session_key=user.session_key)
sessions.delete()
def admin_view(request):
if request.session.get('user_role') != 'admin':
return HttpResponseForbidden('Access denied')
return JsonResponse({'message': 'Welcome, Admin!'})
Tracking User Activity Track the user’s last activity time using sessions:
from datetime import datetime
def track_user_activity(request):
request.session['last_activity'] = str(datetime.now())
4
request.session.set_expiry(1209600) # 2 weeks
HTML Template
<form method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="Username">
<input type="password" name="password" placeholder="Password">
<label>
<input type="checkbox" name="remember_me"> Remember Me
</label>
<button type="submit">Login</button>
</form>