2013-05-02 3 views
1

В настоящее время я использую защиту Grails и Spring для реализации аутентификации. Не делайте много настроек, используя из коробки , и все работает отлично для пользователя, который попадает в auth.gsp, где он вводит имя пользователя/пароль. Теперь у меня есть требование наряду с нормальным потоком, будет ударом с внешнего сайта на наш сайт. У вас будет имя пользователя и пароль, предоставленные в качестве параметров. В сценарии пунша пользователь не должен видеть экран входа в систему и должен пройти аутентификацию с использованием имени пользователя/пароля, предоставленного в параметре url. Возможно ли это? Как я могу получить обе эти цифры в одном и том же кодеБезопасность Grails Spring для различной формы аутентификации

ответ

4

Да, вы можете делать программный логин. Например:

import org.springframework.security.authentication.AuthenticationManager; 
import org.springframework.security.core.context.SecurityContextHolder; 
.... 
AuthenticationManager authenticationManager; 
.... 
def login(String username, String password) { 
    UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(params.username, params.password); 
    User details = new User(params.username); 
    token.setDetails(details); 

    try { 
     //doing actual authentication  
     Authentication auth = authenticationManager.authenticate(token); 
     log.debug("Login succeeded!"); 
     //setting principal in context 
     SecurityContextHolder.getContext().setAuthentication(auth); 
     return true 
    } catch (BadCredentialsException e) { 
     log.debug("Login failed") 
     return false 
    } 
} 

Вы можете увидеть некоторые примеры здесь: http://raibledesigns.com/rd/entry/java_web_application_security_part3

Надеется, что это помогает.

Смежные вопросы