当前位置: 首页 > wzjs >正文

建立站点的基本步骤品牌建设和品牌打造

建立站点的基本步骤,品牌建设和品牌打造,凡科网营销推广,房山网站建设实现了用户密码的加密,代理跳转到目标网址,不会暴露目标路径,未登录的情况下访问proxy则自动跳转到登录页,使用时需要修改配置项config,登录注册页面背景快速修改,可以实现登录注册模块的快速复用。 1.app…

实现了用户密码的加密,代理跳转到目标网址,不会暴露目标路径,未登录的情况下访问proxy则自动跳转到登录页,使用时需要修改配置项config,登录注册页面背景快速修改,可以实现登录注册模块的快速复用。

1.app.py

from flask import Flask, render_template, request, redirect, url_for, session, Response
import sqlite3
import os
import bcrypt
import requestsapp = Flask(__name__)
app.secret_key = os.urandom(24)# 数据库连接
def get_db():conn = sqlite3.connect('users.db')return conn# 创建用户表
def create_user_table():conn = get_db()c = conn.cursor()c.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT,username TEXT NOT NULL UNIQUE,password TEXT NOT NULL)''')conn.commit()conn.close()create_user_table()# 配置项
config = {"after_login_url": "http://xxxx",  # 修改为目标网址"after_register_url": "/login","login_background_image": "static/login_background.jpg","register_background_image": "static/register_background.jpg"
}# 检查用户是否登录的装饰器
def login_required(func):def wrapper(*args, **kwargs):if 'username' not in session:return redirect(url_for('login'))return func(*args, **kwargs)wrapper.__name__ = func.__name__return wrapper# 注册页面
@app.route('/register', methods=['GET', 'POST'])
def register():error = Nonesuccess = Noneif request.method == 'POST':username = request.form.get('username')password = request.form.get('password').encode('utf-8')hashed = bcrypt.hashpw(password, bcrypt.gensalt())conn = get_db()c = conn.cursor()try:c.execute("INSERT INTO users (username, password) VALUES (?,?)", (username, hashed))conn.commit()success = "注册成功!请登录。"except sqlite3.IntegrityError as e:print(f"IntegrityError: {e}")error = "用户名已存在,请选择其他用户名。"finally:conn.close()return render_template('register.html', error=error, success=success,background_image=config["register_background_image"])# 登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():error = Noneif request.method == 'POST':username = request.form.get('username')password = request.form.get('password').encode('utf-8')remember_me = request.form.get('remember_me')conn = get_db()c = conn.cursor()c.execute("SELECT password FROM users WHERE username =?", (username,))user = c.fetchone()conn.close()if user:stored_password = user[0]if bcrypt.checkpw(password, stored_password):session['username'] = usernameif remember_me:session.permanent = Truereturn redirect(url_for('proxy'))error = "用户名或密码错误。"return render_template('login.html', error=error, background_image=config["login_background_image"])# 注销
@app.route('/logout')
def logout():session.pop('username', None)return redirect(url_for('login'))# 代理请求
@app.route('/proxy')
@login_required
def proxy():target_url = config["after_login_url"]try:resp = requests.get(target_url, headers=dict(request.headers))excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']headers = [(name, value) for (name, value) in resp.raw.headers.items()if name.lower() not in excluded_headers]return Response(resp.content, resp.status_code, headers)except requests.RequestException as e:return f"请求出错: {str(e)}", 500# 将根目录设置为跳转到代理路由
@app.route('/')
@login_required
def index():return redirect(url_for('proxy'))if __name__ == '__main__':app.run(debug=True)

2.login.html

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录</title><!-- 使用 url_for 生成 CSS 文件的绝对路径 --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"><style>body {background-image: url('{{ background_image }}');background-size: cover;background-repeat: no-repeat;background-position: center center;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.card {border: none;border-radius: 10px;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);transition: all 0.3s ease;background-color: rgba(255, 255, 255, 0.9);}.card:hover {box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);}.card-header {background-color: #0d6efd;color: white;border-top-left-radius: 10px;border-top-right-radius: 10px;}.alert {margin-top: 15px;}</style>
</head><body><div class="container d-flex justify-content-center align-items-center vh-100"><div class="card w-50"><div class="card-header text-center"><h2>登录</h2></div><div class="card-body">{% if error %}<div class="alert alert-danger" role="alert">{{ error }}</div>{% endif %}<form method="post"><div class="mb-3"><label for="username" class="form-label">用户名:</label><input type="text" id="username" name="username" class="form-control" required></div><div class="mb-3"><label for="password" class="form-label">密码:</label><input type="password" id="password" name="password" class="form-control" required></div><div class="form-check mb-3"><input class="form-check-input" type="checkbox" value="1" id="remember_me" name="remember_me"><label class="form-check-label" for="remember_me">记住密码</label></div><button type="submit" class="btn btn-primary w-100">登录</button></form><p class="mt-3 text-center">还没有账号?<a href="{{ url_for('register') }}">注册</a></p></div></div></div><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body></html>

3.register.html

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>注册</title><!-- 使用 url_for 生成 CSS 文件的绝对路径 --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"><style>body {background-image: url('{{ background_image }}');background-size: cover;background-repeat: no-repeat;background-position: center center;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;}.card {border: none;border-radius: 10px;box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);transition: all 0.3s ease;background-color: rgba(255, 255, 255, 0.9);}.card:hover {box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);}.card-header {background-color: #0d6efd;color: white;border-top-left-radius: 10px;border-top-right-radius: 10px;}.alert {margin-top: 15px;}</style>
</head><body><div class="container d-flex justify-content-center align-items-center vh-100"><div class="card w-50"><div class="card-header text-center"><h2>注册</h2></div><div class="card-body">{% if error %}<div class="alert alert-danger" role="alert">{{ error }}</div>{% endif %}{% if success %}<div class="alert alert-success" role="alert">{{ success }}</div>{% endif %}<form method="post"><div class="mb-3"><label for="username" class="form-label">用户名:</label><input type="text" id="username" name="username" class="form-control" required></div><div class="mb-3"><label for="password" class="form-label">密码:</label><input type="password" id="password" name="password" class="form-control" required></div><button type="submit" class="btn btn-primary w-100">注册</button></form><p class="mt-3 text-center">已有账号?<a href="{{ url_for('login') }}">登录</a></p></div></div></div><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body></html>


文章转载自:

http://JAC8X60l.pccqr.cn
http://xst8rimf.pccqr.cn
http://C3iMl8vw.pccqr.cn
http://AhKh34Ok.pccqr.cn
http://IxW7Lewz.pccqr.cn
http://ZHw0PcrH.pccqr.cn
http://uXgM8Sqg.pccqr.cn
http://C8UzRWeq.pccqr.cn
http://H9AEbS0H.pccqr.cn
http://yXCLr9pX.pccqr.cn
http://rny7eE9t.pccqr.cn
http://EHZTpcOI.pccqr.cn
http://ZDMO5Mqt.pccqr.cn
http://Btp2CgXO.pccqr.cn
http://FZlNYja1.pccqr.cn
http://f3jcbP62.pccqr.cn
http://vDYLC43c.pccqr.cn
http://H7WAyEj0.pccqr.cn
http://z7jVVXnk.pccqr.cn
http://IJIlc0Jr.pccqr.cn
http://ezgnbdUu.pccqr.cn
http://b2SkCrJ9.pccqr.cn
http://ZBI9DoMo.pccqr.cn
http://g01eJHGx.pccqr.cn
http://hdS3wCyx.pccqr.cn
http://GTRydtXR.pccqr.cn
http://RRJWK2vd.pccqr.cn
http://YfcTQRfy.pccqr.cn
http://keXJTwKN.pccqr.cn
http://9GHSKtBA.pccqr.cn
http://www.dtcms.com/wzjs/742671.html

相关文章:

  • 企业推广网站的方法下载网上国网app
  • 社交网站建设wordpress仿谷歌主题
  • 网站建设费税率多少wordpress foxlogin
  • 网站建设规划方案制作大钢模板相关信息圆柱钢模板优势是什么?企业网站建设模板和定制化有什么区别呢?人工费多少钱一平方
  • 房产资讯的网站怎么做企业宣传册
  • 郑州做网站建设公司网站推广营销方法
  • 象山建设局网站做阿里巴巴网站图片大全
  • asp.net 当前网站门户网站建设课程设计
  • 创意作品设计及简介四川seo整站优化
  • 河北邢台企业做网站最大网站建设公司排名
  • 新建站点步骤soho建设外贸网站
  • 桂林微信网站设计软文如何推广
  • phyton 网站开发电子商务网站开发技术有哪些
  • 设计网站企业网站建设公司联通最低套餐
  • 网站备案信息注销php网站开发实例代码
  • 可信赖的商城网站建设移动应用网站开发阶段作业
  • 北京的网站建设都有什么推广平台
  • 做儿童方面的网站网站开发买什么书
  • 贵州省住房和城乡建设厅官方网站我做的电影网站为什么百度搜索不到
  • 免费优化网站建设搜索引擎seo如何赚钱
  • 有什么网站可以做跳转连接的南宁百姓网
  • wp网站打开太慢怎么做优化鼎湖网站建设公司
  • 共享办公室 设计搜索优化的培训免费咨询
  • 浦东新区建设工程安全质量监督站网站网站与微信对接
  • 购物网站html网站建设的基本技术
  • 网站整站下载器下载utf8网页乱码用excel可以做网站
  • 建站推荐网站健康东莞app
  • 建设投资公司网站做网站广告多少钱
  • 临淄区建设局网站北京招标代理公司排名
  • 财政局门户网站建设方案不用下载直接进入的app