Estou quase conseguindo entender o JAAS estou a 3 dias direto e quase consigo entender mas
minha duvida é nesse trecho do código que esta no artigo http://www.guj.com.br/articles/184:
privatevoidvalidaUsuario(Connectionconn)throwsLoginException{StringsenhaBanco=null;PreparedStatementstatement=null;ResultSetrs=null;try{statement=conn.prepareStatement(sqlUser);statement.setString(1,loginInformado);rs=statement.executeQuery();if(rs.next()){senhaBanco=rs.getString(1);}else{succeeded=false;thrownewLoginException("Usuárionãolocalizado.");}}catch(SQLExceptione){succeeded=false;thrownewLoginException("Erroaoabrirsessão:" + e.getClass().getName() + ":" + e.getMessage()); } finally { try { if (rs != null) { rs.close(); } if (statement != null) { statement.close(); } } catch (Exception e) { } } if (senhaInformado.equals(senhaBanco)) { user = new User(login); recuperaRoles(conn); user.setRoles(roles); return; } else { throw new LoginException("SenhaInválida.");}}
Na linha 32 o NetBeans acusa erro pedindo para criar ou variável, ou campo, ou parâmetro login,
acho que ou a classe está incompleta ou devo criar uma classe o que vocês acham,
enfim o que esse parâmetro representa ou ele é usado mais adiante, criado antes ou que?
Até onde eu vi, quem faz a consulta é o proprio containner… O.o
jaissonduarte
fala dessa pesquisa?
publicUsuariologin(Stringnome,Stringsenha){
Usuarioretorno;Stringsql="from Usuario u WHERE u.nome = :nome and senha = :senha";Queryq=this.session.createQuery(sql);q.setString("nome",nome);q.setString("senha",senha);retorno=(Usuario)q.uniqueResult();returnretorno;}
esse trecho eu coloquei la junto com todos os dados do usuário
afinal eu quero que outros possam adicionar alterar usuários,
faz parte da minha aplicação
dai fica assim a classe Usuário:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packagemodelo;importjava.io.Serializable;importjavax.persistence.Basic;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.persistence.NamedQueries;importjavax.persistence.NamedQuery;importjavax.persistence.Query;importjavax.persistence.Table;importjavax.validation.constraints.NotNull;importjavax.validation.constraints.Size;importjavax.xml.bind.annotation.XmlRootElement;/** * * @author ifrs */@Entity@Table(name="usuario")@XmlRootElement@NamedQueries({@NamedQuery(name="Usuario.findAll",query="SELECT u FROM Usuario u"),@NamedQuery(name="Usuario.findByCodigo",query="SELECT u FROM Usuario u WHERE u.codigo = :codigo"),@NamedQuery(name="Usuario.findByNome",query="SELECT u FROM Usuario u WHERE u.nome = :nome"),@NamedQuery(name="Usuario.findByEmail",query="SELECT u FROM Usuario u WHERE u.email = :email"),@NamedQuery(name="Usuario.findBySenha",query="SELECT u FROM Usuario u WHERE u.senha = :senha")})publicclassUsuarioimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@Basic(optional=false)@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="codigo")privateIntegercodigo;@Basic(optional=false)@NotNull@Size(min=1,max=15)@Column(name="nome")privateStringnome;// @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message="E-mail inválido")//if the field contains email address consider using this annotation to enforce field validation@Basic(optional=false)@NotNull@Size(min=1,max=40)@Column(name="email")privateStringemail;@Basic(optional=false)@NotNull@Size(min=1,max=10)@Column(name="senha")privateStringsenha;publicUsuario(){}publicUsuario(Integercodigo){this.codigo=codigo;}publicUsuario(Integercodigo,Stringnome,Stringemail,Stringsenha){this.codigo=codigo;this.nome=nome;this.email=email;this.senha=senha;}publicIntegergetCodigo(){returncodigo;}publicvoidsetCodigo(Integercodigo){this.codigo=codigo;}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}publicStringgetSenha(){returnsenha;}publicvoidsetSenha(Stringsenha){this.senha=senha;}@OverridepublicinthashCode(){inthash=0;hash+=(codigo!=null?codigo.hashCode():0);returnhash;}@Overridepublicbooleanequals(Objectobject){// TODO: Warning - this method won't work in the case the id fields are not setif(!(objectinstanceofUsuario)){returnfalse;}Usuarioother=(Usuario)object;if((this.codigo==null&&other.codigo!=null)||(this.codigo!=null&&!this.codigo.equals(other.codigo))){returnfalse;}returntrue;}@OverridepublicStringtoString(){returnnome;}publicUsuariologin(Stringnome,Stringsenha){Usuarioretorno;Stringsql="from Usuario u WHERE u.nome = :nome and senha = :senha";Queryq=this.session.createQuery(sql);q.setString("nome",nome);q.setString("senha",senha);retorno=(Usuario)q.uniqueResult();returnretorno;}
eu acho que esta errado
mas no que
E
evefuji
pelo que eu vi, no lugar de “login” na linha 32, você tem que colocar “loginInformado”.