สอบถาม วิธีใช้หรือแนะนำ การใช้ flask_login ร่วมกับ configparser

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
jirawoot
PHP VIP Members
PHP VIP Members
Posts: 1218
Joined: 17/06/2019 10:30 am

สอบถาม วิธีใช้หรือแนะนำ การใช้ flask_login ร่วมกับ configparser

Post by jirawoot » 11/07/2019 4:42 pm

ขอวิธีใช้หรือแนะนำ การใช้ flask_login ร่วมกับ configparser ผมจะทำหน้า login เพื่อจะเข้าไปยังหน้า จัดการข้อมูล user

tatiya
PHP VIP Members
PHP VIP Members
Posts: 2845
Joined: 09/07/2018 9:35 am

Re: สอบถาม วิธีใช้หรือแนะนำ การใช้ flask_login ร่วมกับ configparser

Post by tatiya » 11/07/2019 6:04 pm

แยกประเด็นก่อนนะครับ
1. configparser คือสำหรับ อ่าน ไฟล์ config ที่เราสร้างขึ้นมา งั้นการใช้ร่วมกันคือ จะเอาค่า มาเช็ค กับ flask_login อารมณ์เดียวกันกับ การเรา query จาก database มาใช้งาน แต่นี่คือการอ่านค่าจะ config

ตัวอย่างเช่น สร้างไฟล์ test.conf มา วิธีสร้างดูจากกระทู้นี้ viewtopic.php?p=157702#p157702

Code: Select all

[options]
user = test
pwd = 1234
วิธีอ่านค่าด้วย python

Code: Select all

import configparser
config = configparser.ConfigParser()
config.read('test.conf')
test_user = config['options']['user']
pwd = config['options']['pwd']
print user
print pwd
ผล
test
1234

2. การใช้งาน flask_login ร่วมกับ configparser
ผมสร้างไฟล์ index.py

Code: Select all

#-*- coding=utf-8 -*-
from flask import Flask, flash, render_template ,request ,session, redirect, url_for
import flask_login
from passlib.hash import pbkdf2_sha256
import configparser

config = configparser.ConfigParser()
config.read('test.conf')
test_user = config['options']['user']
pwd = config['options']['pwd']

app = Flask(__name__)
app.secret_key = 'ff938fl//jvl;a93kff9qp@Rifomc'

login_manager = flask_login.LoginManager()
login_manager.init_app(app)

users = {test_user: {'password': pwd}}
hash_p = pbkdf2_sha256.hash(users[test_user]['password'])

class User(flask_login.UserMixin):
    pass

@login_manager.user_loader
def user_loader(email):
    if email not in users:
        return

    user = User()
    user.id = email
    return user

@login_manager.request_loader
def request_loader(request):
    email = request.form.get('email')
    if email not in users:
        return

    user = User()
    user.id = email

    if pbkdf2_sha256.verify(request.form['password'], hash_p):
        user.is_authenticated
    else :
        pass
    return user

@app.route('/')
def index():
    return render_template("login.html")

@app.route('/login',methods=['GET', 'POST'])
def login():
    email = request.form['email']

    if request.form['email'] in users:
        if pbkdf2_sha256.verify(request.form['password'], hash_p):
            user = User()
            user.id = email
            flask_login.login_user(user)
            flash('You were successfully logged in')
            return redirect(url_for('config'))
        else:
            flash('Wrong Username or Password. Try Again')
            return render_template('login.html')
    else:
        flash('Wrong Username or Password. Try Again')
        return render_template('login.html')

@app.route('/config')
@flask_login.login_required
def config():
    return render_template('test.html', login=flask_login.current_user.id)

@app.route('/logout')
def logout():
    flask_login.logout_user()
    return render_template('login.html')

if __name__ == '__main__':
    app.run(debug=True)
login.html

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
<form method="post" action="">
  <input type="hidden" name="csrf_token" value="{{ csrf_token }}" />
</form>

{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}

<div class="login">
	<div class="login-screen">
		<div class="app-title">
			<h1>Login</h1>
		</div>

		<div class="login-form">
            <form class="login-form" action="\login" method="POST">
			<div class="control-group">
			<input type="text" class="login-field" value="" placeholder="username" name="email" id="login-name">
			<label class="login-field-icon fui-user" for="login-name"></label>
			</div>

			<div class="control-group">
			<input type="password" class="login-field" name="password" placeholder="password" id="login-pass">
			<label class="login-field-icon fui-lock" for="login-pass"></label>
			</div>

			<input class="btn" type="submit" name="submit" value="Login"/>
            </form>
		</div>
	</div>
</div>


</body>
</html>
test.html

Code: Select all

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% with messages = get_flashed_messages() %}
  {% if messages %}
    {% for message in messages %}
      <div class="w3-panel w3-green w3-display-container">
          <span onclick="this.parentElement.style.display='none'"
          class="w3-button w3-green w3-large w3-display-topright">&times;</span>
          <h3>{{ messages[0] }}!</h3>
          <p>Login as : {{ login }}</p>
        </div>
    {% endfor %}
  {% endif %}
{% endwith %}
<a href="/logout">ออก</a>

</body>
</html>
ผล
Image
Image

ออกจากระบบ แล้วกดกลับ
Image

log in ผิด
Image
Image Image Image GOODBYE AND GOODLUCK EVERYONE Love you all bye. Thank you for everything.
26/09/2019

Post Reply

Return to “Programming - C/C++ & java & Python”

Users browsing this forum: No registered users and 5 guests