質問編集履歴
1
コードを編集しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
flask-loginでappにログイン機能を実装し、ローカル環境ではログインするとうまくいきました。しかし、コアサーバーにそれをアップロードし、そこからログインしようとするとUnauthorizedのエラーが出てしまいます。
|
2
2
|
また、ブラウザchrome以外だとユーザー新規登録の時にエラーが発生、そしてChromeでもユーザー名などを日本語にするとエラーが起きてしまいます。(ローカルでは、日本語でも問題なく登録できた。)なぜこのようなエラーが出るのかを突き止めたいです。
|
3
|
+
※追記
|
4
|
+
index.pyを編集しました。
|
3
5
|
|
4
6
|
```階層
|
5
7
|
app─┬─index.py
|
@@ -35,6 +37,9 @@
|
|
35
37
|
```
|
36
38
|
|
37
39
|
```index.py
|
40
|
+
import os
|
41
|
+
import random, string
|
42
|
+
import math
|
38
43
|
from flask import Flask, render_template, request, redirect, url_for, g, session, flash
|
39
44
|
from flask_sqlalchemy import SQLAlchemy
|
40
45
|
from flask_login import LoginManager, UserMixin, current_user, login_user, login_required, logout_user
|
@@ -46,51 +51,172 @@
|
|
46
51
|
app.config['SECRET_KEY'] = os.urandom(24)
|
47
52
|
db = SQLAlchemy(app)
|
48
53
|
|
54
|
+
app.config['UPLOAD_FOLDER'] = 'static/images'
|
55
|
+
app.config['MAX_CONTENT_LENGTH'] = 16 * 1000 * 1000
|
56
|
+
|
49
57
|
login_manager = LoginManager()
|
50
58
|
login_manager.init_app(app)
|
51
59
|
|
60
|
+
|
61
|
+
|
52
62
|
class User(UserMixin, db.Model):
|
53
63
|
id = db.Column(db.Integer, primary_key=True)
|
54
64
|
username = db.Column(db.String(50))
|
55
65
|
password = db.Column(db.String(25))
|
66
|
+
mail = db.Column(db.String(64))
|
67
|
+
msg = db.Column(db.String(500))
|
68
|
+
voting = db.Column(db.String(3))
|
69
|
+
video_query = db.Column(db.String(3))
|
70
|
+
rep = db.Column(db.Float)
|
71
|
+
star = db.Column(db.Integer)
|
72
|
+
|
73
|
+
def get_id(self):
|
74
|
+
return self.id
|
75
|
+
|
76
|
+
def is_authenticated(self):
|
77
|
+
return True
|
78
|
+
|
79
|
+
def is_anonymous(self):
|
80
|
+
return False
|
81
|
+
|
82
|
+
def is_active(self):
|
83
|
+
return False
|
84
|
+
|
85
|
+
class User_mail(UserMixin, db.Model):
|
86
|
+
id = db.Column(db.Integer, primary_key=True)
|
87
|
+
username = db.Column(db.String(50))
|
88
|
+
mail = db.Column(db.String(64))
|
89
|
+
|
90
|
+
class Vote(UserMixin, db.Model):
|
91
|
+
__tablename__ = "vote"
|
92
|
+
id = db.Column(db.Integer, primary_key=True)
|
93
|
+
voted_mail = db.Column(db.String(64))
|
94
|
+
vote_mail = db.Column(db.String(64))
|
95
|
+
|
96
|
+
class VideoVote(db.Model):
|
97
|
+
id = db.Column(db.Integer, primary_key=True)
|
98
|
+
video_voted_mail = db.Column(db.String(64))
|
99
|
+
video_vote_mail = db.Column(db.String(64))
|
100
|
+
|
101
|
+
|
102
|
+
class Hit(db.Model):
|
103
|
+
id = db.Column(db.Integer, primary_key=True)
|
104
|
+
star_mail = db.Column(db.String(64))
|
105
|
+
hit_mail = db.Column(db.String(64))
|
106
|
+
hit_id = db.Column(db.String(64))
|
107
|
+
|
108
|
+
class VideoHit(db.Model):
|
109
|
+
id = db.Column(db.Integer, primary_key=True)
|
110
|
+
video_star_mail = db.Column(db.String(64))
|
111
|
+
video_hit_mail = db.Column(db.String(64))
|
112
|
+
video_hit_id = db.Column(db.Integer)
|
113
|
+
|
114
|
+
class ForRep(db.Model):
|
115
|
+
id = db.Column(db.Integer, primary_key=True)
|
116
|
+
video_star_mail = db.Column(db.String(64))
|
117
|
+
video_hit_mail = db.Column(db.String(64))
|
118
|
+
|
119
|
+
class GroupVideo(db.Model):
|
120
|
+
id = db.Column(db.Integer, primary_key=True)
|
121
|
+
one = db.Column(db.Integer)
|
122
|
+
two = db.Column(db.Integer)
|
123
|
+
three = db.Column(db.Integer)
|
124
|
+
four = db.Column(db.Integer)
|
125
|
+
five = db.Column(db.Integer)
|
126
|
+
group_id = db.Column(db.Integer)
|
127
|
+
|
128
|
+
def randomname(n):
|
129
|
+
randlst = [random.choice(string.ascii_letters + string.digits) for i in range(n)]
|
130
|
+
return ''.join(randlst)
|
131
|
+
|
132
|
+
db.create_all()
|
133
|
+
|
134
|
+
|
135
|
+
@login_manager.user_loader
|
136
|
+
def load_user(user_id):
|
137
|
+
return User.query.get(int(user_id))
|
56
138
|
|
57
139
|
@app.route('/')
|
58
140
|
def index():
|
59
|
-
|
141
|
+
return render_template('index.html')
|
60
142
|
|
61
143
|
@app.route('/register', methods=['POST', 'GET'])
|
62
144
|
def register():
|
63
145
|
if request.method == "POST":
|
64
146
|
username = request.form.get('name')
|
65
147
|
password = request.form.get('password')
|
148
|
+
mailaddress = request.form.get('mail')
|
149
|
+
mailg ='@' in mailaddress
|
150
|
+
mailgd = '.' in mailaddress
|
151
|
+
print(mailg)
|
152
|
+
if mailg == False:
|
153
|
+
return redirect('/register_w3')
|
154
|
+
if mailgd == False:
|
155
|
+
return redirect('/register_w3')
|
156
|
+
print(username + ':' + password + ':' + mailaddress)
|
157
|
+
# Userのインスタンスを作成
|
158
|
+
if username == '':
|
159
|
+
return redirect('/register')
|
160
|
+
elif password == '':
|
161
|
+
return redirect('/register')
|
162
|
+
elif mailaddress == '':
|
163
|
+
return redirect('/register')
|
164
|
+
elif User_mail.query.filter_by(mail=mailaddress).first():
|
165
|
+
return redirect('/register')
|
166
|
+
else:
|
66
|
-
user = User(username=username, password=generate_password_hash(password, method='sha256'))
|
167
|
+
user = User(username=username, password=generate_password_hash(password, method='sha256'), mail=mailaddress, msg="なし", rep=4, star=0)
|
67
|
-
db.session.add(user)
|
168
|
+
db.session.add(user)
|
68
|
-
db.session.commit()
|
169
|
+
db.session.commit()
|
170
|
+
user_mail = User_mail(username=username, mail=mailaddress)
|
171
|
+
db.session.add(user_mail)
|
172
|
+
db.session.commit()
|
173
|
+
print(mailaddress)
|
69
|
-
return redirect('/login')
|
174
|
+
return redirect('/login')
|
70
|
-
else:
|
175
|
+
else:
|
71
176
|
return render_template('register.html')
|
72
177
|
|
73
|
-
@app.route('/login')
|
178
|
+
@app.route('/login', methods=['GET', 'POST'])
|
74
|
-
def in
|
179
|
+
def login():
|
75
180
|
if request.method == "POST":
|
76
181
|
|
77
182
|
username = request.form.get('name')
|
78
183
|
password = request.form.get('password')
|
184
|
+
# Userテーブルからusernameに一致するユーザを取得
|
79
185
|
user = User.query.filter_by(username=username).first()
|
80
186
|
if user:
|
81
187
|
if check_password_hash(user.password, password):
|
82
188
|
login_user(user)
|
189
|
+
print(current_user.username)
|
83
190
|
return redirect('/myhome')
|
84
191
|
else:
|
85
|
-
return redirect('/login')
|
192
|
+
return redirect('/login')
|
86
193
|
else:
|
87
|
-
return redirect('/login')
|
194
|
+
return redirect('/login')
|
88
195
|
else:
|
89
196
|
return render_template('login.html')
|
90
197
|
|
198
|
+
|
199
|
+
|
91
200
|
@app.route('/myhome')
|
201
|
+
@login_required
|
92
202
|
def myhome():
|
203
|
+
if VideoHit.query.filter_by(video_hit_mail=current_user.mail).first():
|
204
|
+
for i in VideoHit.query.filter_by(video_hit_mail=current_user.mail).all():
|
205
|
+
db.session.delete(i)
|
206
|
+
db.session.commit()
|
207
|
+
elif VideoHit.query.filter_by(video_star_mail=current_user.mail).first():
|
208
|
+
for i in VideoHit.query.filter_by(video_star_mail=current_user.mail).all():
|
209
|
+
db.session.delete(i)
|
210
|
+
db.session.commit()
|
211
|
+
current_user.video_query = 'off'
|
93
|
-
|
212
|
+
current_user.voting = 'off'
|
213
|
+
db.session.commit()
|
214
|
+
blogarticles = User.query.all()
|
215
|
+
votes = Vote.query.filter_by(vote_mail = current_user.mail).all()
|
216
|
+
voted_mails = []
|
217
|
+
for i in votes:
|
218
|
+
voted_mails.append(i.voted_mail)
|
219
|
+
return render_template('myhome.html', voted_mails=voted_mails, current_user=current_user, username=current_user.username, blogarticles=blogarticles, math=math, int=int, str=str, os=os)
|
94
220
|
|
95
221
|
```
|
96
222
|
|