2012-11-28 57 views
5

Tôi có một ứng dụng web mẫu (bình có đăng nhập bằng bình chạy trên heroku) tại URL này: http://twittaclone.herokuapp.com.Các vấn đề về Flask-Login và Heroku

Khi tôi chạy nó trên máy chủ cục bộ, chức năng đăng nhập hoạt động tốt. Khi tôi chuyển sang heroku, nó không hoạt động và không cho phép người dùng đăng nhập (nó cho phép đăng ký người dùng). Sửa đổi cơ sở dữ liệu đang được thực hiện.

Tại sao đăng nhập bình không hoạt động trên heroku?

app = Flask(__name__) 
mysql = MySQL() 

app.config['MYSQL_DATABASE_HOST'] = os.environ['MYSQL_DATABASE_HOST'] if 'MYSQL_DATABASE_HOST' in os.environ else config.MYSQL_DATABASE_HOST 
app.config['MYSQL_DATABASE_PORT'] = os.environ['MYSQL_DATABASE_PORT'] if 'MYSQL_DATABASE_PORT' in os.environ else config.MYSQL_DATABASE_PORT 
app.config['MYSQL_DATABASE_USER'] = os.environ['MYSQL_DATABASE_USER'] if 'MYSQL_DATABASE_USER' in os.environ else config.MYSQL_DATABASE_USER 
app.config['MYSQL_DATABASE_PASSWORD'] = os.environ['MYSQL_DATABASE_PASSWORD'] if 'MYSQL_DATABASE_PASSWORD' in os.environ else config.MYSQL_DATABASE_PASSWORD 
app.config['MYSQL_DATABASE_DB'] = os.environ['MYSQL_DATABASE_DB'] if 'MYSQL_DATABASE_DB' in os.environ else config.MYSQL_DATABASE_DB 

mysql.init_app(app) 

if 'SECRET_KEY' in os.environ: app.config['SECRET_KEY'] = os.environ['SECRET_KEY'] 
else: app.config['SECRET_KEY'] = os.urandom(24) 

def connect_db(): return mysql.connect() 


### 
# Routing for your application. 
### 

login_manager = LoginManager() 
login_manager.login_view = "login" 

@login_manager.user_loader 
def load_user(username): 
    g.db = connect_db() 
    return get_user(username) 

login_manager.init_app(app) 

@app.route('/') 
def home(): return render_template('home.html') 

def connect_db(): return mysql.connect() 

@app.before_request 
def before_request(): 
    g.user = current_user 
    g.db = connect_db() 

@app.teardown_request 
def tear_down(exception): 
    g.db.close() 

@app.route('/main/') 
@login_required 
def main(): 
    print("in main") 
    tweets, user = get_main() 
    follower_count, followee_count = get_follower_info(g.user.username) 
    return render_template('main.html', user=user, tweets=tweets, followercount =  follower_count, followeecount = followee_count) 


@app.route('/login/', methods=['GET', 'POST']) 
def login(): 
    """Logs the user in.""" 
    if request.method == 'GET': 
     if current_user is user_logged_in: logout_user() 

    error = None 
    if request.method == 'POST': 
     user = get_user(request.form['username']) 
     if user is None: 
      error = 'Invalid username' 
     elif not check_password_hash(user.password, request.form['password']): 
      error = 'Invalid password' 
     else: 
      flash('You were logged in') 
      login_user(user) 
      return redirect(url_for('main')) 

    return render_template('login.html', error=error) 
+0

Bạn có ý gì khi 'bẻ khóa'? – alexvassel

+0

Nó tiếp tục chuyển hướng bạn đăng nhập nhiều lần. –

+0

thử đăng ký bằng tên giả như tên người dùng, email: a @ a, mật khẩu: a. Nó sẽ chuyển hướng bạn để đăng nhập nhiều lần –

Trả lời

Các vấn đề liên quan