Performance: Role-based access control
This affects the server response time and client-side rendering speed by controlling which UI elements and routes are accessible based on user roles.
from flask import Flask, request, abort from functools import wraps app = Flask(__name__) def role_required(role): def decorator(f): @wraps(f) def wrapped(*args, **kwargs): user_role = request.args.get('role') if user_role != role: abort(403) return f(*args, **kwargs) return wrapped return decorator @app.route('/dashboard') @role_required('admin') def dashboard(): return 'Admin Dashboard'
from flask import Flask, request app = Flask(__name__) @app.route('/dashboard') def dashboard(): user_role = request.args.get('role') if user_role == 'admin': return 'Admin Dashboard' elif user_role == 'user': return 'User Dashboard' else: return 'Access Denied', 403
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Manual role checks in each route | No extra DOM nodes | 0 | 0 | [!] OK |
| Centralized role check decorator | No extra DOM nodes | 0 | 0 | [OK] Good |
@app.route('/dashboard')
@role_required('editor')
def dashboard():
return 'Welcome Editor'@app.route('/admin')
@role_required('admin')
def admin_panel():
return 'Admin Panel'/settings that only users with roles 'admin' or 'manager' can access. Which code snippet correctly implements this role-based access control?@app.route('/settings')
@role_required('admin')
@role_required('manager')
def settings():
return 'Settings Page' stacks decorators, which requires both roles simultaneously, not either/or.@app.route('/settings')
@role_required(['admin', 'manager'])
def settings():
return 'Settings Page' assumes role_required accepts list, which may not be supported by default.@app.route('/settings')
@role_required('admin' or 'manager')
def settings():
return 'Settings Page' uses 'admin' or 'manager' which evaluates to 'admin' always, incorrect.@app.route('/settings')
def settings():
if current_user.role in ['admin', 'manager']:
return 'Settings Page'
return 'Access Denied' manually checks if user role is in allowed list, correctly allowing either role.Pass the test and this pattern moves unknown