Well,
to begin with: Which exact version of TG2 are you using and how did you
install it (virtualenv)?
Am 13.12.2014 um 02:45 schrieb EoghanM:
> I'm a longtime TG1 user, and started a new project in TG2. I've just
> spent quite a number of hours trying to make the login page work,
> similar to the OP. Here's what I want to do:
>
> - Give appropriate error messages depending on whether the username
> exists or password is incorrect
> - Repopulate the username after an unsuccessful login attempt
> - Highlight whichever form field is incorrect
It is commonly agreed that a login form should *never* ever tell you
which field is incorrect and whether the username already exists!
Because hackers, you know?
> I haven't been able to do any of these as (I've learned) this
> functionality is delegated to repoze.who, and I can't find the place on
> my harddrive where the code for this lives.
Well since it is a third-party package that was installed when you
installed TG2, it's in your virtualenvs site-packages folder.
You could find out by opening up a Python interpreter and executing
'from repoze import who; print who.__path__' (not tested, but should work).
> Searching in this forum for 'login_handler' shows that plenty of other
> people have also had this or similar problems.
> I can't do anything in the post_login controller, as it doesn't receive
> any information about what username was tried, beyond the fact that
> request.identity is empty.
> I tried adding custom middleware (similar to LoginCleaner), but adding
> the POST login user_name to the environ doesn't survive the redirects.
> I'm sure any serious user of TG2 (like Diez) has worked out how to get
> around this, as the items I've listed above are basic functions of a
> login page; the big concern would be as to why some sort of solution or
> replacement hasn't made it's way back into TG2 trunk yet.
> (I've no idea why repoze.who was chosen as a component, but for learning
> purposes, it's just a big magic black box).
> Replacing the TG2 auth with 3rd party code or something I rolled myself
> kind of defeats the purpose of using a framework (documentation & reuse
> of other peoples' recipes and extensions).
Well yes, but the original premise of TurboGears was always to use
well-known and tested components and provide the "plumbing" between
them. repoze.{who,what} were the de facto standard for WSGI
authentication and authorization. That being said, those packages
themselves are of course documented on their own, so you should have a
look there: http://repozewho.readthedocs.org/en/latest/ (Sadly, it seems
the docs for 1.0.18 aren't available anymore)
I do agree with you, that as an authentication framework, it seems
overly complex at first. But once you need to support different
authentication mechanisms in your application or need to provide a
customizable layer for your deployment, you are gonny appreciate it's
design.
Moritz
> Eoghan
>
>
> On Wednesday, 12 June 2013 17:31:34 UTC+1, Alessandro Molina wrote:
>
> Doesn't the authenticator get the environ of the current request as
> parameter of the authenticate method?
> You can store there any parameter you want to pass to the
> application and retrieve it from request.environ.
>
> That is the quickest solution I can think of
>
>
>
> On Tue, Jun 11, 2013 at 12:41 AM, Carl Antuar <[email protected]
> <javascript:>> wrote:
>
> I've run into this problem recently at work, when we wanted to
> lock accounts with a custom message after too many failed retries.
>
> Thus far, the best (but still ugly) workaround that I've found
> is to have our custom Repoze authenticator add a query string
> parameter to the FriendlyFormPlugin post_login_url property,
> then look for that parameter in the controller. It's not totally
> reliable - sometimes the parameter doesn't arrive in the
> controller, perhaps due to caching of some kind - but it often
> seems to work.
>
> I wish Repoze would pass through the username that was attempted
> when it is reporting a login failure to the application, so that
> the application could check up on that username and figure out
> the cause of failure. Or simply allow custom parameters to be
> set in the authenticator and passed through to the app. Haven't
> found a good way yet.
>
>
> On Tuesday, 9 November 2010 02:31:08 UTC+10, Yannick Gingras wrote:
>
>
> Greetings TG users,
> I have been digging down in the auth code that I get from
> the quick
> start and there does not seem to be a way to have custom error
> messages for login failures. I see that I can change the flash
> message but nevertheless, it's one message for all the possible
> failures.
>
> What would be a the least painful way to have custom
> messages for
> cases like:
> - no user name
> - no password
> - invalid password
> - user account has been locked by site admins
>
> Doing that at form validation time would be trivial so I'm
> thinking of
> stripping the friendly form plugin from the equation but I
> can't see
> an easy way to do that.
>
> Would it be easier to tell TG not to initially the auth
> stack and to
> create the repoze.who auth cookied by hand?
>
> Thanks in advance for your help,
>
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/turbogears.
For more options, visit https://groups.google.com/d/optout.