если вы еще не отправили свои изменения в git
git reset --soft HEAD~1
Он сбросит все изменения и вернется к одному коммиту обратно
Если это последний сделанный вами коммит и вы хотите чтобы удалить файл из локального и удаленного репозитория, попробуйте это:
git rm <file>
git commit --amend
или даже лучше:
сбросить сначала
git reset --soft HEAD~1
сбросить ненужный файл
git reset HEAD path/to/unwanted_file
совершить снова
git commit -c ORIG_HEAD
Расширение org.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProvider
/**
* @author rodrigoap
*
*/
public class WebServiceUserDetailsAuthenticationProvider extends
AbstractUserDetailsAuthenticationProvider {
@Override
protected UserDetails retrieveUser(String username,
UsernamePasswordAuthenticationToken authentication)
throws AuthenticationException {
//Improve this line:
String password = authentication.getCredentials().toString();
// Invoke your webservice here
GrantedAuthority[] grantedAuth = loginWebService.login(username, password);
// create UserDetails. Warning: User is deprecated!
UserDetails userDetails = new User(username, password, grantedAuth);
return userDetails;
}
}
Я написал в следующий класс:
PncUserDetailsAuthenticationProvider расширяет AbstractUserDetailsAuthenticationProvider
Реализует метод recieveUser:
@Override
protected UserDetails retrieveUser(String username, UsernamePasswordAuthenticationToken token) throws AuthenticationException {
try {
server = (PncUtilRemote) new InitialContext().lookup("PncUtilBean");
if (server != null) {
String password = SHA1(token.getCredentials().toString());
String[] auth = server.login(username, password);
if (auth.length > 0) {
PncUserDetails details = new PncUserDetails(username, password);
for (int i = 0; i < auth.length; i++) {
details.addAuthority(auth[i]);
}
return details;
}
}
} catch (Exception e) {
System.out.println("! " + e.getClass().getName() + " in com.logica.pnc.security.PncUserDetailsAuthenticationProvider.retrieveUser(String, UsernamePasswordAuthenticationToken): " + e.getMessage());
}
throw new BadCredentialsException("");
}
Чтобы включить AuthenticationProvider, вам нужно добавить несколько строк в файл application-context.xml:
<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager"> <property name="providers"> <list><ref local="PncAuthenticationProvider" /></list> </property> </bean> <bean id="PncAuthenticationProvider" class="com.logica.pnc.security.PncUserDetailsAuthenticationProvider"> <security:custom-authentication-provider /> </bean>
Важно, чтобы вы установили автоконфигурацию на false:
<security:http auto-config="false" />
Спасибо rodrigoap за указание на штуку AuthenticationProvider :)
Идея UserDetailsService заключается в том, что ваша реализация предоставляет объект UserDetails, представляющий пользователя с этим именем пользователя, а Spring Security обрабатывает проверку учетных данных.
Если такая конструкция не работает с вашим сервером, потому что вам требуется пароль в качестве параметра, вам, возможно, придется рассмотреть возможность реализации собственного AuthenticationProvider.