有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有登录页面,我添加了一些配置文件,所以在添加一些之后,我会为每个配置文件和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;

    }

} }

用户GCV。爪哇

包装模型

@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}

我在安全中验证了该方法。安全性,它将为url返回null

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;
        }

共 (1) 个答案

  1. # 1 楼答案

    问题是,当自定义安全类从Secure扩展时,该类将丢失。安全性—他没有覆盖onAuthenticated方法,因此解决方案是将自定义onAuthenticated实现到默认类中

     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;
                }
            }