Использование контроля доступа на основе групп в Spring security 3.0 - PullRequest
1 голос
/ 15 марта 2011

Я работаю с интеграцией CAS с моим веб-приложением с платформой Spring security 3.0. Я создал защищенную страницу, к которой можно получить доступ, только если у пользователя есть роль ROLE_SUPERVISOR.

  1. При использовании "usersByUsernameQuery" value="select username,password,enabled from users where username=?" Все работало отлично.

  2. при использовании "groupAuthoritiesByUsernameQuery", я могу получить группы пользователя, вошедшего в систему. Например. он говорит, что предоставленные полномочия - это администраторы, супервизоры, которые получены из таблицы group_permission. Но когда я пытаюсь получить доступ к защищенной странице, он показывает, что доступ запрещен. Кажется, что фактические роли / разрешения, которые я назначил группам (например, ROLE_SUPERVISOR для супервизоров), не отражены или не подтверждены должным образом.

Я что-то упустил? Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 16 марта 2011

Я нашел ответ сам, я должен переопределить этот метод в моем пользовательском классе jdbcImplentation

@SuppressWarnings("unchecked")
protected List<GrantedAuthority> loadGroupAuthorities(String username) {
    return getJdbcTemplate().query(groupAuthoritiesByUsernameQuery, new String[] {username}, new RowMapper() {
        @SuppressWarnings("deprecation")
        public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
             String roleName = rs.getString("permissionname");
             GrantedAuthorityImpl authority = new GrantedAuthorityImpl(roleName);
             return authority;
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...