2013-05-09 6 views
0

로그인을위한 로그인 액션을 생성하려고합니다. 데이터베이스에서 가치를 얻고 있습니다. 그러나 문제는 문자열로 값을 검사 할 때 제대로 작동하지 않으며 else 부분이 실행되어 브라우저에 메시지가 표시된다는 것입니다. Grails 2.1.0을 사용하고 있습니다. 나는 이것이 정상적인 문제라고 생각할지라도 어떻게 해야할지 잘 모른다. 아무도 이것에 나를 도울 수 있습니까? 당신이 사용자의 목록을 그래서grails 컨트롤러에서 검색된 값과 문자열을 비교합니다.

>>>>>>>>>>>>>>>>>>>>>>>> [admin] 
+2

하 석 : 그래서, 그 ["admin"] != "admin"

는 것처럼, 대신 findBy를 사용 맞아! 내 제안은 : 자신 만의 보안을 만들지 말고, 알려진 (스프링 보안 플러그인)을 사용하십시오. –

+0

@ Mr.Cat 어떻게해야할지 모르겠군요. 저를 안내해 주실 수 있습니까? –

+0

http://blog.springsource.org/2010/08/11/simplified-spring-security-with-grails/ –

답변

1

당신은 .findAllBy를 사용하는이 한 요소, :

def loginAction = { 
    def username = params?.username 
    def password = params?.password 
    def user = Login.findAllByUsernameAndPassword(username, password) 
    def status = user.status 
    def role = user.role 
    println(">>>>>>>>>>>>>>>>>>>>>>>> "+role); 

    if(role == 'admin'){ 
     render "Admin Login" 
    }else if(role == "teacher"){ 
     render "Teacher's Login" 
    }else if(role == "student"){ 
     render "student login" 
    }else{ 
     flash.message = message(code: "Log-In failed, Please try again !!!") 
     redirect(controller:"login",action:"login") 
    } 
} 

참고 아래의 출력을 제공, println 메소드 작품 : 여기 아래에있는 내 코드입니다 명부. 결과적으로 역할 변수는 [admin] 값 (제공된 출력 참조)을 갖습니다. 역할 목록입니다. 문자열이 아닌 문자열 목록입니다.

이 목록을 admin과 문자열 값으로 비교하고 있습니다.

def user = Login.findByUsernameAndPassword(username, password) 
+0

감사합니다. 지금은 사용 중입니다.하지만 보안을 위해 Mr. Cat의 조언을 사용해야합니다. –

+0

예, MrCat 맞습니다. 자체 구현 대신 스프링 보안을 사용하는 것이 훨씬 낫습니다. –

관련 문제