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