[Flask] Unable to set current_user.authenticated to True

Gergely Polonkai gergely at polonkai.eu
Fri Jul 5 03:33:57 EDT 2019


The whole problem is that UserMixin.is_authenticated is a bit
counterintuitive as, by default, it always returns True. Contrast that with
AnonymousUserMixin.is_authenticated, which always returns False.

So to check if someone is logged in with login_user, check if
current_user.is_authenticated is True. When no one is logged in,
current_user returns AnonymousUser; if someone is logged in, current_user
returns a User object.

Thus, if current_user is still a User object after calling logout_user,
that’s a bug somewhere. In this case it would be helpful if you could share
a minimum working (well, in this case *not* working) example with us to see
where the problem is.

Best,
Gergely


Gergely Polonkai
[image: https://]about.me/gergely.polonkai
<https://about.me/gergely.polonkai?promo=email_sig&utm_source=email_sig&utm_medium=email_sig&utm_campaign=external_links>


fim., 4. júl. 2019 kl. 18:51 skrifaði sidwoodstock . <sidwoodstock at gmail.com
>:

> Ahh okay I understand now.
>
> I haven't tested this myself, but perhaps try {% if current_user %} as
> your conditional since it ought to return None if no one is logged in.
>
> -Scott
>
> On Thu, Jul 4, 2019 at 8:56 AM <flask-request at python.org> wrote:
>
>> Send Flask mailing list submissions to
>>         flask at python.org
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>         https://mail.python.org/mailman/listinfo/flask
>> or, via email, send a message with subject or body 'help' to
>>         flask-request at python.org
>>
>> You can reach the person managing the list at
>>         flask-owner at python.org
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of Flask digest..."
>>
>>
>> Today's Topics:
>>
>>    1. Re: Flask Digest, Vol 49, Issue 5 (Abdul Mohammed)
>>    2. Re: Flask Digest, Vol 49, Issue 6 (Abdul Mohammed)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Thu, 4 Jul 2019 16:22:42 +0100
>> From: Abdul Mohammed <imonikemohammed at gmail.com>
>> To: flask at python.org
>> Subject: Re: [Flask] Flask Digest, Vol 49, Issue 5
>> Message-ID:
>>         <
>> CAEKkz85XoPnseQ9_jF_0WcfKDruXLAKKCBp4+2k_FogNA8zVcQ at mail.gmail.com>
>> Content-Type: text/plain; charset="utf-8"
>>
>> Thanks Gergely for the response.
>> Yes I am using Flask-Login and I think directly because this is how I
>> import it:
>>
>> from flask_login import login_user
>>
>> My problem is not that I can't log in. I can log in fine. The problem is
>> essentially that I can not log out. I am trying to use the value of
>> current_user.is_authenticated to determine whether to show the "Sign in"
>> or
>> "Sign out" link. If True, it shows "Sign out" and "Sign in" when False.
>> For some reason, the value remains False after I have logged in so the
>> "Sign out" link never displays and so I am trapped in the app (Please save
>> me!!!)
>> because I can't log out. I hope I have made my problems clearer.
>>
>> Regards
>>
>> On Wed, Jul 3, 2019 at 5:04 PM <flask-request at python.org> wrote:
>>
>> > Send Flask mailing list submissions to
>> >         flask at python.org
>> >
>> > To subscribe or unsubscribe via the World Wide Web, visit
>> >         https://mail.python.org/mailman/listinfo/flask
>> > or, via email, send a message with subject or body 'help' to
>> >         flask-request at python.org
>> >
>> > You can reach the person managing the list at
>> >         flask-owner at python.org
>> >
>> > When replying, please edit your Subject line so it is more specific
>> > than "Re: Contents of Flask digest..."
>> >
>> >
>> > Today's Topics:
>> >
>> >    1. Re: Unable to set current_user.authenticated to True
>> >       (Gergely Polonkai)
>> >
>> >
>> > ----------------------------------------------------------------------
>> >
>> > Message: 1
>> > Date: Tue, 2 Jul 2019 19:01:20 +0200
>> > From: Gergely Polonkai <gergely at polonkai.eu>
>> > To: Leni Kadali Mutungi <lenikmutungi at gmail.com>
>> > Cc: flask <Flask at python.org>
>> > Subject: Re: [Flask] Unable to set current_user.authenticated to True
>> > Message-ID:
>> >         <CACczBUJWEAoLjnsQSh5Z+3mVuzjZ1=Ly-=
>> > zxtk3bMO+n-+-y3Q at mail.gmail.com>
>> > Content-Type: text/plain; charset="utf-8"
>> >
>> > 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-0001.html
>> > >
>> >
>> > ------------------------------
>> >
>> > Subject: Digest Footer
>> >
>> > _______________________________________________
>> > Flask mailing list
>> > Flask at python.org
>> > https://mail.python.org/mailman/listinfo/flask
>> >
>> >
>> > ------------------------------
>> >
>> > End of Flask Digest, Vol 49, Issue 5
>> > ************************************
>> >
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: <
>> http://mail.python.org/pipermail/flask/attachments/20190704/29797e8e/attachment-0001.html
>> >
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Thu, 4 Jul 2019 16:55:18 +0100
>> From: Abdul Mohammed <imonikemohammed at gmail.com>
>> To: flask at python.org
>> Subject: Re: [Flask] Flask Digest, Vol 49, Issue 6
>> Message-ID:
>>         <CAEKkz86CgWtkHuahmd9KDyWVbEOfvGs3qdk31O8youK8qQnO=
>> g at mail.gmail.com>
>> Content-Type: text/plain; charset="utf-8"
>>
>> Thanks Scott.
>> I just explained to Gergely that my problem is not logging in but getting
>> the value of current_user.is_authenticated to change to True so that I
>> can log out. I wasn't originally doing the current_user = user assignment.
>> I could log in with either current_user or user. When the value of
>> current_user.is_authenticated wouldn't change to True, I added it because
>> i
>> was just trying to see whether it would solve my problem. I will get rid
>> of
>> it
>> but the problem is likely to remain.
>>
>> On Thu, Jul 4, 2019 at 5:26 AM <flask-request at python.org> wrote:
>>
>> > Send Flask mailing list submissions to
>> >         flask at python.org
>> >
>> > To subscribe or unsubscribe via the World Wide Web, visit
>> >         https://mail.python.org/mailman/listinfo/flask
>> > or, via email, send a message with subject or body 'help' to
>> >         flask-request at python.org
>> >
>> > You can reach the person managing the list at
>> >         flask-owner at python.org
>> >
>> > When replying, please edit your Subject line so it is more specific
>> > than "Re: Contents of Flask digest..."
>> >
>> >
>> > Today's Topics:
>> >
>> >    1. Re: Unable to set current_user.authenticated to True
>> >       (sidwoodstock .)
>> >    2. Re: Unable to set current_user.authenticated to True
>> >       (Gergely Polonkai)
>> >
>> >
>> > ----------------------------------------------------------------------
>> >
>> > Message: 1
>> > Date: Wed, 3 Jul 2019 09:19:20 -0700
>> > From: "sidwoodstock ." <sidwoodstock at gmail.com>
>> > To: flask at python.org
>> > Subject: Re: [Flask] Unable to set current_user.authenticated to True
>> > Message-ID:
>> >         <CALovGGPpEBH==M0jK7S4g2aH4v0oBp=Lnx--=
>> > KV78LHGK2k8hA at mail.gmail.com>
>> > Content-Type: text/plain; charset="utf-8"
>> >
>> > Also, if Gergely's suggestion doesn't work, you could try removing your
>> > variable assignment of current_user = user. I see no practical reason
>> to do
>> > this, and since current_user is a built-in (and very handy) variable,
>> maybe
>> > that is somehow related to your issue?
>> >
>> > > > current_user = user
>> >
>> > and then just call login_user directly with your user you already have
>> at
>> > hand:
>> >
>> > > >               login_user(user, form.remember_me.data)
>> >
>> > -Scott
>> >
>> > On Wed, Jul 3, 2019 at 9:03 AM <flask-request at python.org> wrote:
>> >
>> > > Send Flask mailing list submissions to
>> > >         flask at python.org
>> > >
>> > > To subscribe or unsubscribe via the World Wide Web, visit
>> > >         https://mail.python.org/mailman/listinfo/flask
>> > > or, via email, send a message with subject or body 'help' to
>> > >         flask-request at python.org
>> > >
>> > > You can reach the person managing the list at
>> > >         flask-owner at python.org
>> > >
>> > > When replying, please edit your Subject line so it is more specific
>> > > than "Re: Contents of Flask digest..."
>> > >
>> > >
>> > > Today's Topics:
>> > >
>> > >    1. Re: Unable to set current_user.authenticated to True
>> > >       (Gergely Polonkai)
>> > >
>> > >
>> > > ----------------------------------------------------------------------
>> > >
>> > > Message: 1
>> > > Date: Tue, 2 Jul 2019 19:01:20 +0200
>> > > From: Gergely Polonkai <gergely at polonkai.eu>
>> > > To: Leni Kadali Mutungi <lenikmutungi at gmail.com>
>> > > Cc: flask <Flask at python.org>
>> > > Subject: Re: [Flask] Unable to set current_user.authenticated to True
>> > > Message-ID:
>> > >         <CACczBUJWEAoLjnsQSh5Z+3mVuzjZ1=Ly-=
>> > > zxtk3bMO+n-+-y3Q at mail.gmail.com>
>> > > Content-Type: text/plain; charset="utf-8"
>> > >
>> > > 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-0001.html
>> > > >
>> > >
>> > > ------------------------------
>> > >
>> > > Subject: Digest Footer
>> > >
>> > > _______________________________________________
>> > > Flask mailing list
>> > > Flask at python.org
>> > > https://mail.python.org/mailman/listinfo/flask
>> > >
>> > >
>> > > ------------------------------
>> > >
>> > > End of Flask Digest, Vol 49, Issue 5
>> > > ************************************
>> > >
>> > -------------- next part --------------
>> > An HTML attachment was scrubbed...
>> > URL: <
>> >
>> http://mail.python.org/pipermail/flask/attachments/20190703/c47bb246/attachment-0001.html
>> > >
>> >
>> > ------------------------------
>> >
>> > Message: 2
>> > Date: Thu, 4 Jul 2019 06:25:40 +0200
>> > From: Gergely Polonkai <gergely at polonkai.eu>
>> > To: "sidwoodstock ." <sidwoodstock at gmail.com>
>> > Cc: flask <Flask at python.org>
>> > Subject: Re: [Flask] Unable to set current_user.authenticated to True
>> > Message-ID:
>> >         <
>> > CACczBUJaj67qxPCEi9Tmjku42QDxDsuVLmEGQGuFaC2nndT7eA at mail.gmail.com>
>> > Content-Type: text/plain; charset="utf-8"
>> >
>> > No, modifying current_user directly is not possible (at least it won?t
>> > propagate outside the function). current_user is a proxy object that
>> points
>> > to the logged in user in the current request. If you assign a different
>> > value to it, its proxy nature goes away which is definitely not what you
>> > want: in extreme cases it might introduce security issues where users
>> can
>> > access each the data of other.
>> >
>> > On Wed, 3 Jul 2019, 18:19 sidwoodstock ., <sidwoodstock at gmail.com>
>> wrote:
>> >
>> > > Also, if Gergely's suggestion doesn't work, you could try removing
>> your
>> > > variable assignment of current_user = user. I see no practical reason
>> to
>> > do
>> > > this, and since current_user is a built-in (and very handy) variable,
>> > maybe
>> > > that is somehow related to your issue?
>> > >
>> > > > > current_user = user
>> > >
>> > > and then just call login_user directly with your user you already
>> have at
>> > > hand:
>> > >
>> > > > >               login_user(user, form.remember_me.data)
>> > >
>> > > -Scott
>> > >
>> > > On Wed, Jul 3, 2019 at 9:03 AM <flask-request at python.org> wrote:
>> > >
>> > >> Send Flask mailing list submissions to
>> > >>         flask at python.org
>> > >>
>> > >> To subscribe or unsubscribe via the World Wide Web, visit
>> > >>         https://mail.python.org/mailman/listinfo/flask
>> > >> or, via email, send a message with subject or body 'help' to
>> > >>         flask-request at python.org
>> > >>
>> > >> You can reach the person managing the list at
>> > >>         flask-owner at python.org
>> > >>
>> > >> When replying, please edit your Subject line so it is more specific
>> > >> than "Re: Contents of Flask digest..."
>> > >>
>> > >>
>> > >> Today's Topics:
>> > >>
>> > >>    1. Re: Unable to set current_user.authenticated to True
>> > >>       (Gergely Polonkai)
>> > >>
>> > >>
>> > >>
>> ----------------------------------------------------------------------
>> > >>
>> > >> Message: 1
>> > >> Date: Tue, 2 Jul 2019 19:01:20 +0200
>> > >> From: Gergely Polonkai <gergely at polonkai.eu>
>> > >> To: Leni Kadali Mutungi <lenikmutungi at gmail.com>
>> > >> Cc: flask <Flask at python.org>
>> > >> Subject: Re: [Flask] Unable to set current_user.authenticated to True
>> > >> Message-ID:
>> > >>         <CACczBUJWEAoLjnsQSh5Z+3mVuzjZ1=Ly-=
>> > >> zxtk3bMO+n-+-y3Q at mail.gmail.com>
>> > >> Content-Type: text/plain; charset="utf-8"
>> > >>
>> > >> 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-0001.html
>> > >> >
>> > >>
>> > >> ------------------------------
>> > >>
>> > >> Subject: Digest Footer
>> > >>
>> > >> _______________________________________________
>> > >> Flask mailing list
>> > >> Flask at python.org
>> > >> https://mail.python.org/mailman/listinfo/flask
>> > >>
>> > >>
>> > >> ------------------------------
>> > >>
>> > >> End of Flask Digest, Vol 49, Issue 5
>> > >> ************************************
>> > >>
>> > > _______________________________________________
>> > > Flask mailing list
>> > > Flask at python.org
>> > > https://mail.python.org/mailman/listinfo/flask
>> > >
>> >
>> > On Wed, 3 Jul 2019, 18:19 sidwoodstock ., <sidwoodstock at gmail.com>
>> wrote:
>> >
>> > > Also, if Gergely's suggestion doesn't work, you could try removing
>> your
>> > > variable assignment of current_user = user. I see no practical reason
>> to
>> > do
>> > > this, and since current_user is a built-in (and very handy) variable,
>> > maybe
>> > > that is somehow related to your issue?
>> > >
>> > > > > current_user = user
>> > >
>> > > and then just call login_user directly with your user you already
>> have at
>> > > hand:
>> > >
>> > > > >               login_user(user, form.remember_me.data)
>> > >
>> > > -Scott
>> > >
>> > > On Wed, Jul 3, 2019 at 9:03 AM <flask-request at python.org> wrote:
>> > >
>> > >> Send Flask mailing list submissions to
>> > >>         flask at python.org
>> > >>
>> > >> To subscribe or unsubscribe via the World Wide Web, visit
>> > >>         https://mail.python.org/mailman/listinfo/flask
>> > >> or, via email, send a message with subject or body 'help' to
>> > >>         flask-request at python.org
>> > >>
>> > >> You can reach the person managing the list at
>> > >>         flask-owner at python.org
>> > >>
>> > >> When replying, please edit your Subject line so it is more specific
>> > >> than "Re: Contents of Flask digest..."
>> > >>
>> > >>
>> > >> Today's Topics:
>> > >>
>> > >>    1. Re: Unable to set current_user.authenticated to True
>> > >>       (Gergely Polonkai)
>> > >>
>> > >>
>> > >>
>> ----------------------------------------------------------------------
>> > >>
>> > >> Message: 1
>> > >> Date: Tue, 2 Jul 2019 19:01:20 +0200
>> > >> From: Gergely Polonkai <gergely at polonkai.eu>
>> > >> To: Leni Kadali Mutungi <lenikmutungi at gmail.com>
>> > >> Cc: flask <Flask at python.org>
>> > >> Subject: Re: [Flask] Unable to set current_user.authenticated to True
>> > >> Message-ID:
>> > >>         <CACczBUJWEAoLjnsQSh5Z+3mVuzjZ1=Ly-=
>> > >> zxtk3bMO+n-+-y3Q at mail.gmail.com>
>> > >> Content-Type: text/plain; charset="utf-8"
>> > >>
>> > >> 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-0001.html
>> > >> >
>> > >>
>> > >> ------------------------------
>> > >>
>> > >> Subject: Digest Footer
>> > >>
>> > >> _______________________________________________
>> > >> Flask mailing list
>> > >> Flask at python.org
>> > >> https://mail.python.org/mailman/listinfo/flask
>> > >>
>> > >>
>> > >> ------------------------------
>> > >>
>> > >> End of Flask Digest, Vol 49, Issue 5
>> > >> ************************************
>> > >>
>> > > _______________________________________________
>> > > 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/20190704/055df8bc/attachment.html
>> > >
>> >
>> > ------------------------------
>> >
>> > Subject: Digest Footer
>> >
>> > _______________________________________________
>> > Flask mailing list
>> > Flask at python.org
>> > https://mail.python.org/mailman/listinfo/flask
>> >
>> >
>> > ------------------------------
>> >
>> > End of Flask Digest, Vol 49, Issue 6
>> > ************************************
>> >
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL: <
>> http://mail.python.org/pipermail/flask/attachments/20190704/89bc8e49/attachment.html
>> >
>>
>> ------------------------------
>>
>> Subject: Digest Footer
>>
>> _______________________________________________
>> Flask mailing list
>> Flask at python.org
>> https://mail.python.org/mailman/listinfo/flask
>>
>>
>> ------------------------------
>>
>> End of Flask Digest, Vol 49, Issue 7
>> ************************************
>>
> _______________________________________________
> 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/20190705/93953a71/attachment-0001.html>


More information about the Flask mailing list