Форум сайта python.su
0
Добрый день. Точнее работает, но не пойму как ему сказать, что пользователь авторизован.
После авторизации иду в /admin, но все равно кидает на login
View:
@app.route('/login', methods = ['GET', 'POST']) def login(): form = LoginForm() if request.method == 'GET': return render_template('login.html', title = 'Sign In', form = form) if form.validate_on_submit(): remember_me= False if form.remember_me.data: remember_me=True name=form.login.data password=hashlib.md5(form.password.data.encode('utf-8')).hexdigest() registered_user = User.query.filter_by(name=name,password=password).first() if registered_user is None: flash('Пользователь или пароль введены неверно', 'error') return redirect(url_for('login')) login_user(registered_user, remember=remember_me) flash('Logged in successfully') return redirect(request.args.get('next') or url_for('index')) @app.route('/admin') @login_required def admin(): if g.user is not None and g.user.is_authenticated(): return redirect(url_for('login')) return render_template('admin.html', title = 'Administration') @app.before_request def before_request(): g.user = current_user @lm.user_loader def load_user(id): return User.query.get(int(id))
class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key = True) name = Column (String(30), unique=True) email = Column(String(120), unique = True) password = Column(String(64)) role = Column(Integer, default = ROLE_USER) date_creation = Column(DateTime, default=datetime.datetime.utcnow()) posts = relationship('Post', backref = 'author', lazy = 'dynamic') def __init__(self,name=None,email=None,password=None): self.name = name self.email = email self.password = password def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return str(self.id).encode('utf-8') def __repr__(self): return '<User %r>' % (self.name)
Офлайн
0
Блин все работает. Туплю. Убейте тему, плиз
надо было сделать так
@app.route('/admin') @login_required def admin(): if g.user is not None and g.user.is_authenticated(): return render_template('admin.html', title = 'Administration') else: return redirect(url_for('login'))
Офлайн
58
Посмотрите в сторону flask-classy. Рекомендую…
Офлайн