4-5 логин+регистр
.docxОрдена трудового Красного Знамени Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Московский технический университет связи и информатики Кафедра «Сети Связи и Системы Коммутации» Лабораторная работа № 4-5 «Создание системы регистрации и авторизации в веб-приложении»
Группа: БИН-2008 Выполнил: Ядринцев С. М. Проверил(а): Манохина В.И. Дата: 02.03.2022
Москва 2022
Цель
работы:
Создать систему регистрации и авторизации
в веб-приложении.
Пользователи:
Работа
системы авторизации:
Исключения:
Исходный
код файла арр.ру:
from flask import Flask, render_template, request, redirect  | 
		
  | 
	
  | 
		import psycopg2  | 
	
  | 
		app = Flask(__name__)  | 
	
  | 
		conn = psycopg2.connect(database="service1_db",  | 
	
  | 
		user="postgres",  | 
	
  | 
		password="361011",  | 
	
  | 
		host="localhost",  | 
	
  | 
		port="5432",)  | 
	
  | 
		cursor=conn.cursor()  | 
	
  | 
		@app.route('/', methods=['GET'])  | 
	
  | 
		def index():  | 
	
  | 
		return redirect("/login/")  | 
	
  | 
		@app.route('/login/', methods=['POST', 'GET'])  | 
	
  | 
		def login():  | 
	
  | 
		if request.method == 'POST':  | 
	
  | 
		if request.form.get("login"):  | 
	
  | 
		username = request.form.get('username')  | 
	
  | 
		password = request.form.get('password')  | 
	
  | 
		if (not username) or (not password):  | 
	
  | 
		return render_template('nofile.html')  | 
	
  | 
		try:  | 
	
  | 
		cursor.execute("SELECT full_name FROM service.users WHERE login=%s AND password=%s", (str(username), str(password)))  | 
	
  | 
		records = list(cursor.fetchall())  | 
	
  | 
		return render_template('account.html', full_name=records[0][0])  | 
	
  | 
		except:  | 
	
  | 
		return render_template('notexist.html')  | 
	
  | 
		# return render_template('account.html', full_name=records[0][0])  | 
	
  | 
		elif request.form.get("registration"):  | 
	
  | 
		return redirect("/registration/")  | 
	
  | 
		return render_template('login.html')  | 
	
  | 
		@app.route('/registration/', methods=['POST', 'GET'])  | 
	
  | 
		def registration():  | 
	
  | 
		if request.method == 'POST':  | 
	
  | 
		name = request.form.get('name')  | 
	
  | 
		login = request.form.get('login')  | 
	
  | 
		password = request.form.get('password')  | 
	
  | 
		if (not name):  | 
	
  | 
		return render_template('login2.html')  | 
	
  | 
		elif not name.replace(" ", "").isalpha():  | 
	
  | 
		return render_template('numberinname.html')  | 
	
  | 
		elif (not login) or (not password):  | 
	
  | 
		return render_template('nofile.html')  | 
	
  | 
		if login:  | 
	
  | 
		cursor.execute('SELECT * FROM service.users')  | 
	
  | 
		rows = cursor.fetchall()  | 
	
  | 
		for row in rows:  | 
	
  | 
		if login == row[2]:  | 
	
  | 
		return render_template('login2.html')  | 
	
  | 
		cursor.execute('INSERT INTO service.users (full_name, login, password) VALUES (%s, %s, %s);',  | 
	
  | 
		(str(name), str(login), str(password)))  | 
	
  | 
		conn.commit()  | 
	
  | 
		return redirect("/login/")  | 
	
  | 
		return render_template('registration.html')  | 
	
Исходный код account.html:
<!DOCTYPE html>  | 
		
  | 
	
  | 
		<html lang="en">  | 
	
  | 
		<head>  | 
	
  | 
		<meta charset="UTF-8">  | 
	
  | 
		<title>Title</title>  | 
	
  | 
		<form action="" method="post">  | 
	
  | 
		{% if full_name %}  | 
	
  | 
		<p>Hello, {{full_name}}! </p>  | 
	
  | 
		{% endif %}  | 
	
  | 
		
 
  | 
	
  | 
		</p>  | 
	
  | 
		
 
  | 
	
  | 
		</form>  | 
	
  | 
		</head>  | 
	
  | 
		<body>  | 
	
  | 
		
 
  | 
	
  | 
		</body>  | 
	
  | 
		</html>  | 
	
Код файла login: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="" method="post">
<p>
<label for="username">Логин</label>
<input type="text" name="username">
</p>
<p>
<label for="password">Пароль</label>
<input type="password" name="password">
</p>
<p>
<input type="submit" value="Войти" name="login">
<input type="submit" value="Регистрация" name="registration">
</p>
</form>
</body>
</html> Код файла login2:
<!DOCTYPE html>  | 
		
  | 
	
  | 
		<html lang="en">  | 
	
  | 
		<head>  | 
	
  | 
		<meta charset="UTF-8">  | 
	
  | 
		<title>Error</title>  | 
	
  | 
		<form action="" method="post">  | 
	
  | 
		<p> user with same login already exists </p>  | 
	
  | 
		</form>  | 
	
  | 
		</head>  | 
	
  | 
		</html>  | 
	
Код файла noteexist: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Error</title>
<form action="" method="post">
<p> account does not exist or entered wrong password </p>
</form>
</head>
</html> Код файла numberinname: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Error</title>
<form action="" method="post">
<p> name cannot contain numbers </p>
</form>
</head>
</html> Код файла registration: <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Registration</title>
</head>
<body>
<form action="" method="post">
<p>
<label for="name">Полное имя:</label>
<input type="text" name="name">
</p>
<p>
<label for="login">Логин:</label>
<input type="text" name="login">
</p>
<p>
<label for="password">Пароль:</label>
<input type="password" name="password">
</p>
<p>
<input type="submit" value="Sign In">
</p>
</form>
</body>
</html> Вывод: В ходе данной лабораторной работе я создал систему авторизации и регистрации в веб-приложении, используя как .py, так и .html файлы, также я задействовал систему БД postgreSQL, чтобы логины и пароли пользователей могли где-то храниться.
