[Flask] Unable to set current_user.authenticated to True
Gergely Polonkai
gergely at polonkai.eu
Tue Jul 2 13:01:20 EDT 2019
Hello,
I assume you are using Flask-Login (either directly or via another
extension like Flask-Security). If this is the case, you can import
login_user and call it like login_user(user).
If that does not work, you may want to check if the user is active (ie. not
disabled), as it is the most common culprit when a user canʼt be logged in.
Best,
Gergely
On Mon, 1 Jul 2019, 19:03 Leni Kadali Mutungi, <lenikmutungi at gmail.com>
wrote:
> I think you mean to set it as `current_user.is_authenticated = True`.
>
> On 7/1/19 6:14 PM, Abdul Mohammed wrote:
> > Hello everyone,
> > I am trying to toggle between "Sign in" and "Sign
> > out" links using the current_user.is_authenticated variable such that
> > when it returns False, the "Sign in" is displayed and when True the
> > "Sign out" link is displayed. At some point in the login code I set
> > current_user.authenticated = True. The thing is that by the I am
> > successfully logged in and presented with the next view, it is the
> > "Sign in" link that is still displayed. When I check
> > current_user.is_authenticated, it returns False, even though I had
> > explicitly set it to True. Please can anyone point out what I am might
> > be doing wrong? Here is my code:
> >
> > I have a base.html file that contains the "Sign in" and "Sign out"
> > links that is extended by the other templates:
> >
> > <ul class="nav navbar-nav navbar-right">
> > {% if (current_user.is_authenticated) %}
> > <li><a href="{{ url_for('logout') }}">Sign Out</a></li>
> > {% else %}
> > <li><a href="{{ url_for('index') }}">Sign In</a></li>
> > {% endif %}
> > </ul>
> >
> > <body>
> > {% block page_content %}{% endblock %}
> > </body>
> >
> >
> > When the app first loads in the browser it displays a login form,
> > login.html:
> >
> > {% extends "base.html" %}
> >
> > {% block content %}
> > {% import "bootstrap/wtf.html" as wtf %}
> > {% block title %}Flasky - Login{% endblock %}
> > {% block page_content %}
> > <div class="page-header">
> > <h1>Login</h1>
> > </div>
> > <div class="col-md-4">
> > {{ wtf.quick_form(form) }}
> > </div>
> > {% endblock %}
> > {% endblock %}
> >
> > When a user logs in, it loads a template dashboard.html that displays
> > a map. The top part looks like this:
> >
> > {% extends "base.html" %}
> >
> > {% block page_content %}
> > <html>
> > <head>
> > <title>Lagos Map</title>
> > <link rel="stylesheet"
> > href="https://unpkg.com/leaflet@1.1.0/dist/leaflet.css"
> >
> integrity="sha512-wcw6ts8Anuw10Mzh9Ytw4pylW8+NAD4ch3lqm9lzAsTxg0GFeJgoAtxuCLREZSC5lUXdVyo/7yfsqFjQ4S+aKw=="
> > crossorigin=""/>
> > <script src="https://unpkg.com/leaflet@1.1.0/dist/leaflet.js"
> >
> integrity="sha512-mNqn2Wg7tSToJhvHcqfzLMU6J4mkOImSPTxVZAdo+lcPlk+GhZmYgACEe0x35K7YzW1zJ7XyJV/TT1MrdXvMcA=="
> > crossorigin=""></script>
> > <script
> > src="
> https://rawgit.com/k4r573n/leaflet-control-osm-geocoder/master/Control.OSMGeocoder.js
> "></script>
> > <link rel="stylesheet"
> > href="
> https://rawgit.com/k4r573n/leaflet-control-osm-geocoder/master/Control.OSMGeocoder.css"
>
> > />
> > <link rel="stylesheet"
> > href="
> https://cdnjs.cloudflare.com/ajax/libs/leaflet-routing-machine/3.2.5/leaflet-routing-machine.css"
>
> > />
> > <script
> > src="
> https://cdnjs.cloudflare.com/ajax/libs/leaflet-routing-machine/3.2.5/leaflet-routing-machine.js
> "></script>
> > <script
> > src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js
> "></script>
> > ...
> > ...
> >
> > And these are the relevant routes:
> >
> > @app.route('/',methods=['GET','POST'])
> > def index():
> > form = LoginForm()
> > if form.validate_on_submit():
> > user = User.query.filter_by(email=form.email.data).first()
> > if user is not None and
> user.check_password(form.password.data):
> > user.authenticated = True
> > current_user = user
> > db.session.add(current_user)
> > db.session.commit()
> > login_user(current_user, form.remember_me.data)
> > return redirect(request.args.get('next') or
> > url_for('dashboard'))
> > flash('Invalid username or password.')
> > return render_template('auth/login.html', form=form)
> >
> > @app.route('/dashboard')
> > def dashboard():
> > return render_template("dashboard.html")
> >
> > Thank you for your time.
> >
> > _______________________________________________
> > Flask mailing list
> > Flask at python.org
> > https://mail.python.org/mailman/listinfo/flask
>
> --
> -- Kind regards,
> Leni Kadali Mutungi
>
> _______________________________________________
> Flask mailing list
> Flask at python.org
> https://mail.python.org/mailman/listinfo/flask
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/flask/attachments/20190702/424f55cc/attachment.html>
More information about the Flask
mailing list