Grails: ShiroSecurity - войти в систему без имени пользователяPasswordToken - PullRequest
0 голосов
/ 07 октября 2011

Обычный способ аутентификации пользователя заключается в вызове:

SecurityUtils.subject.login (new UsernamePasswordToken (params.username, params.password))

Однако, что если я бы хотелвойти в него автоматически, без необходимости ввода имени пользователя и пароля?Я создал метод в userService, как это:

   def logIn(User user){
    Object userIdentity = user.email
    String realmName = "ShiroDbRealm";
    PrincipalCollection principals = new SimplePrincipalCollection(userIdentity, realmName);
    Subject subject = new Subject.Builder().principals(principals).buildSubject();
    ThreadContext.bind(subject)
   }

Но это не работает, какие-либо подсказки?

1 Ответ

0 голосов
/ 11 октября 2011

Мне удалось решить проблему. Я создал свой собственный класс, который реализует интерфейс AuthenticationToken:

class UsernameToken implements AuthenticationToken{

  private username;

  public UsernameToken(String username) {
    this.username = username;
  }

  public String getPrincipal() {
    return username;
  }
  public String getCredentials() {
    return username;
  }
}

и создал новую область, которая выглядит точно так же, как и область по умолчанию, но без проверки пароля. Теперь я могу использовать

SecurityUtils.subject.login(new UsernameToken(user.username))
...