身份验证播放框架重定向到页面不起作用

authentication play framework redirection to pages doesn't work

我有登录页面并添加了一些配置文件,所以在添加一些配置文件之后,为每个配置文件和 HTML 页面配置控制器。当我制作好用户名和密码时。重定向到每个配置文件的索引页面不起作用,他们将我重定向到登录页面

>

public class Security extends Secure.Security {

static boolean authenticate(String login, String password) {

    return UserGcv.connect(login, password) != null;

}

static void onDisconnected() {
    Application.index();
}

static void onAuthenticated() {
    UserGcv user = UserGcv.find("byLogin", connected()).first();

    Cache.set("user_" + session.get("username"), user, "30min");


    switch (user.profil) {
        case ADMIN:
            Administration.showUsers();
            break;
        case DMC:
            Catalogs.consultArticle();
            break;
        case DCGP:
            DCGPArticle.consultArticleDCGP();
            break;
        case DCE:
            DCEArticle.consultArticleDCE();
            break;
        case Planificateur:
            Planificateur.composerVersion();
            break;
        case ValidAvantage:
            ValidateurAvantage.homeValidateur();
            break;
        case PARAMETRAGE:
            PARAMETRAGE.createParam();
            break;
        case ConfAvantage:
            ConfigAvantage.homeConfigurateur();
            break;

    }

} }

UserGCV.java

包款;

@Entity @Table(name = "user_gcv") @With(Secure.class) public class UserGcv extends Model {

@Column(name = "user_name")
public String userName;
@Column(name = "user_last_name")
public String userLastName;
@Column(name = "user_direction")
public String userDirection;
@Column(name = "user_phone_number")
public Integer userPhoneNumber;
@Column(name = "user_cin")
public Integer userCin;
@Column(name = "user_fonction")
public String userFonction;
@Column(name = "login")
public String login;
@Column(name = "password")
public String password;
@Column(name = "user_mail_address")
@Email
public String userMailAddress;
@Enumerated(EnumType.STRING)
public Profil profil;
@Column(name = "actif")
public int actif;
@OneToMany(mappedBy = "utilisateur")
List<Trace> traces = new ArrayList();

public UserGcv(Long id, String userName, String userLastName,
        String userDirection, Integer userPhoneNumber, Integer userCin,
        String userFonction, String login, String password,
        String userMailAddress, Profil profil, int actif) {
    this.id = id;
    this.userName = userName;
    this.userLastName = userLastName;
    this.userDirection = userDirection;
    this.userPhoneNumber = userPhoneNumber;
    this.userCin = userCin;
    this.userFonction = userFonction;
    this.login = login;
    this.password = password;
    this.userMailAddress = userMailAddress;
    this.profil = profil;
    this.actif = actif;

}

public UserGcv() {
}

public static UserGcv connect(String login, String password) {

    return find("select distinct u from UserGcv u where login=? and password=? and actif=?", login, password, 1).first();

}

public UserGcv(String login, String password) {
    this.login = login;
    this.password = password;

}
public UserGcv(String userName, String userLastName, String userDirection, Integer userPhoneNumber, Integer userCin, String userFonction, String login, String password, String userMailAddress, Profil profil, int actif) {
    this.userName = userName;
    this.userLastName = userLastName;
    this.userDirection = userDirection;
    this.userPhoneNumber = userPhoneNumber;
    this.userCin = userCin;
    this.userFonction = userFonction;
    this.login = login;
    this.password = password;
    this.userMailAddress = userMailAddress;
    this.profil = profil;
    this.actif = actif;
} 
@Override
public String toString() {
    return "" + id;
}

public static List<UserGcv> findAllUsers() {
    return UserGcv.find("order by userName asc").fetch();
}

public boolean isAdmin() {
    return Profil.ADMIN.equals(profil);
}

public boolean isDMC() {
    return Profil.DMC.equals(profil);
}

public boolean isDCGP() {
    return Profil.DCGP.equals(profil);
}

public boolean isPlanificateur() {
    return Profil.Planificateur.equals(profil);
}

public boolean isDCE() {
    return Profil.DCE.equals(profil);
}

public boolean isParametrage() {
    return Profil.PARAMETRAGE.equals(profil);
}

public boolean isConfigAvantage() {
    return Profil.ConfAvantage.equals(profil);
}

public boolean isValidateurAvantage() {
    return Profil.ValidAvantage.equals(profil);
} }

路线

    # Routes

    # Import Secure routes
    #*       /                                       module:secure 
GET  /                                           Secure.login 
POST     /                                       Secure.authenticate 
GET      /logout                                 Secure.logout

    # Home page
    #GET     /                                       Application.index

    # Administration page 
GET     /administration/user/edit/{id}         Administration.editUser 
GET     /administration/new                    Administration.newUser
 GET     /administration/user/save/{id}         Administration.save 
POST    /administration/new                    Administration.save 
GET     /administration/script                 Administration.telechargerScript GET     /administration/download      Administration.download 
GET     /administration/details            Administration.detailsVersion 
GET     /administration/traces             Administration.consulterTraces
 GET     /administration/historique       Administration.exportCSVFile

    # DMC page 
GET     /catalog/index                          Catalogs.index
 GET     /catalog/search                         Catalogs.searchArticle 
GET     /catalog/consult                        Catalogs.modifArticle 
GET     /catalog/search                         Catalogs.searchArticleDes
 GET     /pack/modify                            Catalogs.modifPack 
GET /pack/consult                           Catalogs.consultPack

    GET     /catalogues/getListArticle/?           Catalogs.getListArticle 
POST    /pack/new                              Catalogs.savePack

    # DCGP page 
GET     /dcepack/consultpackdce                 DCEPack.consultPackDCE 
GET     /dcgp/articles                          DCGP.allArticle 
GET     /dcgp/delete                            DCGP.deleteArticle 
GET     /dcgp/facture                           DCGP.generateFacture 
GET     /dcgp/modify                            DCGP.modifyArticle 
GET     /dcgp/valid                             DCGP.validPack 
GET     /dcgppack/consultpackdcgp               DCGPPack.consultPackDCGP

    # Planificateur page

GET     /Planificateur/composer          Planificateur.composerVersion 
GET     /Planificateur/planifierAvantage Planificateur.homePlanificateur

    # Parametrage page 
POST    /parametrage/new                              Parametrage.saveParam
    # Configurateur Avantage pages 
GET     /ConfigAvantage/homeConfigurateur     ConfigAvantage.homeConfigurateur GET     /ConfigAvantage/modifierAvantage/?   ConfigAvantage.modifierAvantage 
GET     /ConfigAvantage/searchPackToAffectation/?ConfigAvantage.searchPackToAffectation 
GET     /VersionAvantage/goToGPS                    VersionAvantage.goToGPS 
GET     /ConfigAvantage/viewAvantageDetails/?     ConfigAvantage.viewAvantageDetails 
GET     /ConfigAvantage/affectationPackView/?     ConfigAvantage.affectationPackView

    #Validateur Avantage Pages 
 GET    /ValidateurAvantage/homeValidateur         ValidateurAvantage.homeValidateur

    # Ignore favicon requests 
GET     /favicon.ico                            404

    # Map static resources from the /app/public folder to the /public path 
GET     /public/                                staticDir:public


    # Import CRUD routes
    *      /admin                                   module:crud

    # Catch all
*       /{controller}/{action}                  {controller}.{action}

我检查了 Secure.Security 中的 onAuthenticated 方法,它 return 对于 url

为空
static void onAuthenticated() {

        UserGcv user = UserGcv.find("byLogin", connected()).first();
        Cache.set("user_" + session.get("username"), user, "60min");
        System.err.println("usecccccccccccccccccccccr"+user);
        switch (user.profil) {
            case ADMIN:
                Administration.showUsers();
                break;
            case DMC:
                Catalogs.consultArticle();
                break;
            case DCGP:
                DCGPArticle.consultArticleDCGP();
                break;
            case DCE:
                DCEArticle.consultArticleDCE();
                break;
            case Planificateur:
                Planificateur.composerVersion();
                break;
            case ValidAvantage:
                ValidateurAvantage.homeValidateur();
                break;
            case PARAMETRAGE:
                PARAMETRAGE.createParam();
                break;
            case ConfAvantage:
               ConfigAvantage.homeConfigurateur();
                break;
        }

问题是自定义安全性 class 当 class 从 Secure.Security 扩展时他没有覆盖方法 onAuthenticated 所以解决方案是将自定义 onAuthenticated 隐含到默认 class

 public static class Security extends Controller {

        /**
         * @Deprecated
         *
         * @param username
         * @param password
         * @return
         */
        static boolean authentify(String username, String password) {
            throw new UnsupportedOperationException();
        }

        /**
         * This method is called during the authentication process. This is
         * where you check if the user is allowed to log in into the system.
         * This is the actual authentication process against a third party
         * system (most of the time a DB).
         *
         * @param username
         * @param password
         * @return true if the authentication process succeeded
         */
        static boolean authenticate(String username, String password) {
            return true;
        }

        /**
         * This method checks that a profile is allowed to view this
         * page/method. This method is called prior to the method's controller
         * annotated with the @Check method.
         *
         * @param profile
         * @return true if you are allowed to execute this controller method.
         */
        static boolean check(String profile) {
            return true;
        }

        /**
         * This method returns the current connected username
         *
         * @return
         */
        static String connected() {
            return session.get("username");
        }

        /**
         * Indicate if a user is currently connected
         *
         * @return true if the user is connected
         */
        static boolean isConnected() {
            return session.contains("username");
        }

        /**
         * This method is called after a successful authentication. You need to
         * override this method if you with to perform specific actions (eg.
         * Record the time the user signed in)
         */
        static void onAuthenticated() {

            UserGcv user = UserGcv.find("byLogin", connected()).first();

            Cache.set("user_" + session.get("username"), user, "60min");

            switch (user.profil) {
                case ADMIN:
                    Administration.showUsers();
                    break;
                case DMC:
                    Catalogs.consultArticle();
                    break;
                case DCGP:
                    DCGPArticle.consultArticleDCGP();
                    break;
                case DCE:
                    DCEArticle.consultArticleDCE();
                    break;
                case Planificateur:
                    Planificateur.composerVersion();
                    break;
                case PARAMETRAGE:
                    PARAMETRAGE.createParam();
                    break;
                case ConfAvantage:
                    ConfigAvantage.homeConfigurateur();
                    break;
                case ValidAvantage:
                    ValidateurAvantage.homeValidateur();
                    break;
                case PlanifDSC:
                    PlanifDSC.homePlanifDSC();
                    break;
            }
        }