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, чтобы логины и пароли пользователей могли где-то храниться.