Bonjour,
je joue avec ce framework sympatique depuis quelques semaines et j'ai un petit problème à mettre en place la sécurité.
D'après ce que j'ai trouvé, l'authentification ne passe pas car les propriétés login et password ne sont pas remplies.
Est-ce que qq1 saurait comment résoudre mon pb?


Je me suis inspiré de l'exemple zentask que j'ai mis à ma sauce:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package controllers;

import exceptions.UserNotFindException;
import exceptions.WrongPasswordConnectionException;
import models.User;
import play.*;
import play.mvc.*;
import play.data.*;
import models.*;
import views.html.*;

public class Authentication extends Controller {

	public static class AuthenticatedUser{
		public String login;
		public String password;

		public String validate() {

		System.out.println("login:("+this.login+")");
		System.out.println("login:("+this.password+")");
		//le problème se situe ici car ces traces me renvoient null pour login et password

			String result=null;
			try {
				if (User.authenticate(login, password) != null) result=null;
			} catch (WrongPasswordConnectionException e) {
				result=" mauvais password";
			} catch (UserNotFindException e){
				result="User non trouvé";
			}
			return result;
		} 
	}

	public static Result login() {
		return ok(
				login.render(Form.form(AuthenticatedUser.class))
				);
	}

	public static Result authenticate() {
		Form<AuthenticatedUser> loginForm = 
				Form.form(AuthenticatedUser.class).bindFromRequest();
		System.out.println(loginForm.toString());

		if(loginForm.hasErrors()) {
			return badRequest(login.render(loginForm));
		} else {
			session("login", loginForm.get().login);
			return redirect(
					routes.Application.index()
					);
		}
	}

	//Fermer la session
	public static Result logout() {
		session().clear();
		flash("success", "Vous êtes déconnecté(e)");
		return redirect(
				routes.Authentication.login()
				);
	}
}
login.scala.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    @(form: Form[Authentication.AuthenticatedUser])
 
    @main("Authentification", null) {
 
        @helper.form(routes.Authentication.authenticate) {
 
            <h2>Qui êtes vous ?</h2>
 
            @if(form.hasGlobalErrors) { 
                <p class="error">@form.globalError.message</p>
            }
 
            @if(flash.contains("success")) {
                <p class="success">@flash.get("success")</p>
            }
 
            <p><input name="login" placeholder="login" 
                value="@form("login").value"></p>
            <p><input type="password" name="password" placeholder="Password"></p>
            <p><button class="btn" type="submit">Login</button></p>
        }
    }