User Authentication in Django (Login, Register, Logout)
๐ง Introduction
Modern web applications lo User Authentication chala important concept.
Simple ga cheppali ante, website lo users ni identify cheyadam, secure access ivvadam.
Manam daily use chese apps like:
-
Social media
-
E-commerce websites
-
Blogging platforms
anni authentication system meeda depend ayi untayi.
๐ What is User Authentication?
User Authentication ante:
๐ User evaro verify cheyadam
๐ Valid credentials (username, password) check cheyadam
๐ Correct ayite access ivvadam
Idi security backbone ani cheppachu.
⚙️ Main Components
1️⃣ Register (Sign Up)
Kotha user account create chesukuntadu.
๐ User details:
Store avutayi database lo.
2️⃣ Login
Already account unna user login avutadu.
๐ System:
-
Username/password verify chestundi
-
Correct ayite login allow chestundi
3️⃣ Logout
User session ni close cheyadam.
๐ Security kosam:
-
Logout taruvata restricted pages access avvu
๐️ How Django Handles Authentication
Django lo built-in ga powerful authentication system undi.
๐ Features:
-
User model ready ga untundi
-
Password hashing automatic
-
Login/logout handling easy
Manam scratch nundi build cheyyalsina avasaram ledu — Django already provide chestundi.
๐ Authentication Flow
Simple flow ila untundi:
-
User register chestadu
-
Credentials database lo store avutayi
-
User login attempt chestadu
-
System verify chestundi
-
Valid ayite session create avutundi
-
Logout ayite session destroy avutundi
๐ก Why Authentication is Important?
๐ Unauthorized access prevent cheyadaniki
๐ User-specific data protect cheyadaniki
๐ Personalized experience ivvadam kosam
๐ Secure web application build cheyadaniki
๐ Real-Time Use Case (Mana Blog Project)
Mana Django blog project lo:
๐ Only logged-in users:
-
Blog create cheyali
-
Edit cheyali
-
Delete cheyali
๐ Public users:
-
Blogs chudachu (read-only)
๐ฅ Conclusion
User Authentication ane di every web application ki must-have feature.
Django tho:
-
Easy implementation
-
Secure system
-
Scalable architecture
Next step lo manam:
๐ Full Login, Register, Logout code build cheddam
๐ Blog ni user-based system ga marchadam ๐
๐ข Call To Action
“Code cheyyadam tho ne nerchukovali ๐ป๐ฅ”
views.py
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout
from .forms import SignupForm, LoginForm
# SIGNUP
def signup_view(request):
form = SignupForm()
if request.method == 'POST':
form = SignupForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.set_password(form.cleaned_data['password'])
user.save()
return redirect('login')
return render(request, 'signup.html', {'form': form})
# LOGIN
def login_view(request):
form = LoginForm()
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
login(request, form.user)
return redirect('dashboard')
return render(request, 'login.html', {'form': form})
# LOGOUT
def logout_view(request):
logout(request)
return redirect('login')
๐ urls.py
from django.urls import path
from . import views
urlpatterns = [
path('signup/', views.signup_view, name='signup'),
path('login/', views.login_view, name='login'),
path('logout/', views.logout_view, name='logout'),
]
๐จ HTML Templates
๐งฉ base.html
<!DOCTYPE html>
<html>
<head>
<title>Auth System</title>
</head>
<body>
<nav>
{% if user.is_authenticated %}
<p>Welcome {{ user.username }}</p>
<a href="{% url 'logout' %}">Logout</a>
{% else %}
<a href="{% url 'login' %}">Login</a>
<a href="{% url 'signup' %}">Signup</a>
{% endif %}
</nav>
<hr>
{% block content %}{% endblock %}
</body>
</html>
๐ signup.html
{% extends 'base.html' %}
{% block content %}
<h2>Signup</h2>
<form method="POST">
{% csrf_token %}
<input type="text" name="username" placeholder="Username"><br><br>
<input type="email" name="email" placeholder="Email"><br><br>
<input type="password" name="password" placeholder="Password"><br><br>
<input type="password" name="confirm_password" placeholder="Confirm Password"><br><br>
<button type="submit">Signup</button>
</form>
<p>Already have account? <a href="{% url 'login' %}">Login</a></p>
{% if form.errors %}
<p style="color:red;">{{ form.errors }}</p>
{% endif %}
{% endblock %}
๐ login.html
{% extends 'base.html' %}
{% block content %}
<h2>Login</h2>
<form method="POST">
{% csrf_token %}
<input type="text" name="username" placeholder="Username"><br><br>
<input type="password" name="password" placeholder="Password"><br><br>
<button type="submit">Login</button>
</form>
<p>Don't have account? <a href="{% url 'signup' %}">Signup</a></p>
{% if form.errors %}
<p style="color:red;">Invalid login details</p>
{% endif %}
{% endblock %}
๐ dashboard.html
{% extends 'base.html' %}
{% block content %}
<h2>Dashboard</h2>
<p>Welcome {{ user.username }} ๐</p>
<p>You are successfully logged in ๐</p>
{% endblock %}
๐ (Protect Dashboard)
from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
Comments
Post a Comment