下面列出了org.springframework.context.annotation.Description#org.springframework.security.crypto.password.PasswordEncoder 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* The PreAuthenticatedAuthenticationProvider does not process the {@link RolesAllowed} annotation.
* @ param authenticationUserDetailsService
* @return
*/
// @Description("PreAuthenticatedAuthenticationProvider will return the existing Authentication token from the authenticate method")
// @Bean
// public PreAuthenticatedAuthenticationProvider preAuthAuthenticationProvider(final AuthenticationUserDetailsService authenticationUserDetailsService){
// return new PreAuthenticatedAuthenticationProvider(){{
// setPreAuthenticatedUserDetailsService(authenticationUserDetailsService);
// }};
// }
@Description("AuthenticationMnager that will generate an authentication token unlike {@link PreAuthenticatedAuthenticationProvider}")
@Bean @DependsOn({"defaultCalendarService"})
public CalendarUserAuthenticationProvider calendarUserAuthenticationProvider(
CalendarService calendarService,
PasswordEncoder passwordEncoder){
return new CalendarUserAuthenticationProvider(calendarService, passwordEncoder);
}
@Autowired
public DefaultCalendarService(final EventDao eventDao,
final CalendarUserDao userDao,
final CalendarUserRepository userRepository,
final PasswordEncoder passwordEncoder) {
if (eventDao == null) {
throw new IllegalArgumentException("eventDao cannot be null");
}
if (userDao == null) {
throw new IllegalArgumentException("userDao cannot be null");
}
if (userRepository == null) {
throw new IllegalArgumentException("userRepository cannot be null");
}
if (passwordEncoder == null) {
throw new IllegalArgumentException("passwordEncoder cannot be null");
}
this.eventDao = eventDao;
this.userDao = userDao;
this.passwordEncoder = passwordEncoder;
}
@Autowired
public DefaultCalendarService(final EventDao eventDao,
final CalendarUserDao userDao,
final CalendarUserRepository userRepository,
final PasswordEncoder passwordEncoder) {
if (eventDao == null) {
throw new IllegalArgumentException("eventDao cannot be null");
}
if (userDao == null) {
throw new IllegalArgumentException("userDao cannot be null");
}
if (userRepository == null) {
throw new IllegalArgumentException("userRepository cannot be null");
}
if (passwordEncoder == null) {
throw new IllegalArgumentException("passwordEncoder cannot be null");
}
this.eventDao = eventDao;
this.userDao = userDao;
this.passwordEncoder = passwordEncoder;
}
@Autowired
public DefaultCalendarService(final EventDao eventDao,
final CalendarUserDao userDao,
final CalendarUserRepository userRepository,
final PasswordEncoder passwordEncoder) {
if (eventDao == null) {
throw new IllegalArgumentException("eventDao cannot be null");
}
if (userDao == null) {
throw new IllegalArgumentException("userDao cannot be null");
}
if (userRepository == null) {
throw new IllegalArgumentException("userRepository cannot be null");
}
if (passwordEncoder == null) {
throw new IllegalArgumentException("passwordEncoder cannot be null");
}
this.eventDao = eventDao;
this.userDao = userDao;
this.passwordEncoder = passwordEncoder;
}
@Autowired
public DefaultCalendarService(final EventDao eventDao,
final CalendarUserDao userDao,
final PasswordEncoder passwordEncoder) {
if (eventDao == null) {
throw new IllegalArgumentException("eventDao cannot be null");
}
if (userDao == null) {
throw new IllegalArgumentException("userDao cannot be null");
}
if (passwordEncoder == null) {
throw new IllegalArgumentException("passwordEncoder cannot be null");
}
this.eventDao = eventDao;
this.userDao = userDao;
this.passwordEncoder = passwordEncoder;
}
@Bean
public MapReactiveUserDetailsService reactiveUserDetailsService(
ObjectProvider<PasswordEncoder> passwordEncoder
) {
return new MapReactiveUserDetailsService(
User.withUsername("user")
.password("user")
.passwordEncoder(p -> getOrDeducePassword(p, passwordEncoder.getIfAvailable()))
.roles("USER")
.build(),
User.withUsername("admin")
.password("admin")
.passwordEncoder(p -> getOrDeducePassword(p, passwordEncoder.getIfAvailable()))
.roles("USER", "ADMIN")
.build()
);
}
public void changePassword(String currentPassword, String newPassword) {
final PasswordEncoder encoder = new BCryptPasswordEncoder();
if (!encoder.matches(currentPassword, getPassword())) {
throw new UsernameNotFoundException("Wrong username and / or password.");
}
setPassword(encoder.encode(newPassword));
}
/**
* 添加用户
*
* @param user
* @param groupId
* 如果添加的用户为学员,必须指定groupId。如果添加的用户为教师,则groupId为任意数字
* @return
*/
@RequestMapping(value = { "/add-user" }, method = RequestMethod.POST)
public @ResponseBody Message addUser(@RequestBody User user) {
user.setCreateTime(new Date());
String password = user.getPassword() + "{" + user.getUserName().toLowerCase() + "}";
PasswordEncoder passwordEncoder = new StandardPasswordEncoderForSha1();
String resultPassword = passwordEncoder.encode(password);
user.setPassword(resultPassword);
user.setEnabled(true);
user.setCreateBy(-1);
user.setUserName(user.getUserName().toLowerCase());
Message message = new Message();
try {
userService.addUser(user, "ROLE_STUDENT", 0, userService.getRoleMap());
} catch (Exception e) {
// TODO Auto-generated catch block
if(e.getMessage().contains(user.getUserName())){
message.setResult("duplicate-username");
message.setMessageInfo("重复的用户名");
} else if(e.getMessage().contains(user.getNationalId())){
message.setResult("duplicate-national-id");
message.setMessageInfo("重复的身份证");
} else if(e.getMessage().contains(user.getEmail())){
message.setResult("duplicate-email");
message.setMessageInfo("重复的邮箱");
} else if(e.getMessage().contains(user.getPhoneNum())){
message.setResult("duplicate-phone");
message.setMessageInfo("重复的电话");
} else{
message.setResult(e.getCause().getMessage());
e.printStackTrace();
}
}
return message;
}
@Override
protected void setUp() throws Exception {
super.setUp();
DataSource dataSource = (DataSource) this.getApplicationContext().getBean("servDataSource");
PasswordEncoder passwordEncoder = (PasswordEncoder) this.getApplicationContext().getBean("compatiblePasswordEncoder");
UserDAO dao = new UserDAO();
dao.setDataSource(dataSource);
dao.setPasswordEncoder(passwordEncoder);
this.userDao = dao;
}
@Test
public void name () throws Exception {
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
for ( int i = 0 ; i < 10 ; i++ ) {
System.err.println( passwordEncoder.encode( "123456" ) );
}
}
public TokenPasswordTokenIssuer(
UserDetailsRepository users,
PasswordEncoder passwordEncoder,
TokenManager tokenManager) {
this.users = users;
this.passwordEncoder = passwordEncoder;
this.tokenManager = tokenManager;
}
@PreAuthorize("hasPermission(#id, '" + AclClassName.Values.LAYOUT + "', '" + PermissionName.Values.LAYOUT_EDIT + "')")
public LayoutDto changeLayoutIcon(final Long id, final MultipartFile iconFile) throws IOException {
log.debug("changeLayoutIcon() - id: {}, iconFile: {}", id, iconFile);
final Layout layout = layoutService.find(id);
//FIXME - rename to thumbnail
final File currentThumbnailFile = new File(platformResourceConfigurationProperties.getImageLibraryDirectory() + "/layout-miniature/" + layout.getIconFileName());
if (currentThumbnailFile.exists()) {
if (!currentThumbnailFile.delete()) {
throw new FileExistsException();
}
}
final PasswordEncoder encoder = new BCryptPasswordEncoder();
final String newIconFileName = encoder.encode(iconFile.getName() + new Date().getTime()).replaceAll("\"", "s").replaceAll("/", "a").replace(".", "sde");
final File newIconFile = new File(platformResourceConfigurationProperties.getImageLibraryDirectory() + "/layout-miniature/" + newIconFileName);
final FileOutputStream out = new FileOutputStream(newIconFile);
out.write(iconFile.getBytes());
out.close();
layout.changeIconFileName(newIconFileName);
final Layout updatedLayout = layoutService.update(layout);
return layoutToLayoutDtoConverter.convert(updatedLayout);
}
@Test
public void standaloneIdmEngineWithDelegatingBCryptDefaultPasswordEncoder() {
contextRunner
.withPropertyValues("flowable.idm.password-encoder=spring_delegating_bcrypt")
.run(context -> {
IdmEngine idmEngine = context.getBean(IdmEngine.class);
assertThat(context).hasSingleBean(PasswordEncoder.class);
org.flowable.idm.api.PasswordEncoder flowablePasswordEncoder = idmEngine.getIdmEngineConfiguration().getPasswordEncoder();
PasswordEncoder passwordEncoder = context.getBean(PasswordEncoder.class);
assertThat(flowablePasswordEncoder)
.isInstanceOfSatisfying(SpringEncoder.class, springEncoder -> {
assertThat(springEncoder.getSpringEncodingProvider()).isEqualTo(passwordEncoder);
});
assertThat(passwordEncoder).isInstanceOf(DelegatingPasswordEncoder.class);
assertThat(flowablePasswordEncoder.encode("test", null))
.as("encoded password")
.startsWith("{bcrypt}");
assertThat(flowablePasswordEncoder.isMatches("test", "test", null))
.as("encoder matchers clear text password")
.isFalse();
assertThat(flowablePasswordEncoder.isMatches("test", new BCryptPasswordEncoder().encode("test"), null))
.as("encoder matchers only bcrypt text password")
.isTrue();
});
}
@Autowired
public CalendarUserAuthenticationProvider(final CalendarService calendarService,
final PasswordEncoder passwordEncoder) {
if (calendarService == null) {
throw new IllegalArgumentException("calendarService cannot be null");
}
if (passwordEncoder == null) {
throw new IllegalArgumentException("passwordEncoder cannot be null");
}
this.calendarService = calendarService;
this.passwordEncoder = passwordEncoder;
}
PasswordResetTokenRepositoryImpl(
PasswordResetTokenFactory passwordResetTokenFactory,
PasswordEncoder passwordEncoder,
DataService dataService) {
this.passwordResetTokenFactory = requireNonNull(passwordResetTokenFactory);
this.passwordEncoder = requireNonNull(passwordEncoder);
this.dataService = requireNonNull(dataService);
this.tokenGenerator = new TokenGenerator();
}
@Bean
public PasswordEncoder passwordEncoder()
{
// Set up a DelegatingPasswordEncoder which decodes legacy passwords using the
// StandardPasswordEncoder but encodes passwords using the modern BCryptPasswordEncoder
String encoderForEncoding = "bcrypt";
Map<String, PasswordEncoder> encoders = new HashMap<>();
encoders.put(encoderForEncoding, new BCryptPasswordEncoder());
DelegatingPasswordEncoder delegatingEncoder = new DelegatingPasswordEncoder(
encoderForEncoding, encoders);
// Decode legacy passwords without encoder ID using the StandardPasswordEncoder
delegatingEncoder.setDefaultPasswordEncoderForMatches(new StandardPasswordEncoder());
return delegatingEncoder;
}
@RequestMapping(value = { "/secure/update-user" }, method = RequestMethod.POST)
public @ResponseBody Message updateUser(@RequestBody User user) {
//UserInfo userInfo = (UserInfo) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user.setCreateTime(new Date());
String password = user.getPassword() + "{" + user.getUserName() + "}";
PasswordEncoder passwordEncoder = new StandardPasswordEncoderForSha1();
String resultPassword = "";
if(user.getPassword() != null)
resultPassword = "".equals(user.getPassword().trim()) ? "" : passwordEncoder.encode(password);
user.setPassword(resultPassword);
user.setEnabled(true);
Message message = new Message();
try {
userService.updateUser(user, null);
} catch (Exception e) {
// TODO Auto-generated catch block
if(e.getMessage().contains(user.getUserName())){
message.setResult("duplicate-username");
message.setMessageInfo("重复的用户名");
} else if(e.getMessage().contains(user.getNationalId())){
message.setResult("duplicate-national-id");
message.setMessageInfo("重复的身份证");
} else if(e.getMessage().contains(user.getEmail())){
message.setResult("duplicate-email");
message.setMessageInfo("重复的邮箱");
} else if(e.getMessage().contains(user.getPhoneNum())){
message.setResult("duplicate-phone");
message.setMessageInfo("重复的电话");
} else{
message.setResult(e.getCause().getMessage());
e.printStackTrace();
}
}
return message;
}
/**
* 添加用户
*
* @param user
* @param groupId
* 如果添加的用户为学员,必须指定groupId。如果添加的用户为教师,则groupId为任意数字
* @return
*/
@RequestMapping(value = { "/admin/add-user-{authority}-{groupId}" }, method = RequestMethod.POST)
public @ResponseBody Message addUser(@RequestBody User user, @PathVariable String authority,
@PathVariable Integer groupId) {
UserInfo userInfo = (UserInfo) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user.setCreateTime(new Date());
String password = user.getPassword() + "{" + user.getUserName().toLowerCase() + "}";
PasswordEncoder passwordEncoder = new StandardPasswordEncoderForSha1();
String resultPassword = passwordEncoder.encode(password);
user.setPassword(resultPassword);
user.setEnabled(true);
user.setCreateBy(userInfo.getUserid());
user.setUserName(user.getUserName().toLowerCase());
Message message = new Message();
try {
userService.addUser(user, authority, groupId, userInfo.getRoleMap());
} catch (Exception e) {
// TODO Auto-generated catch block
if(e.getMessage().contains(user.getUserName())){
message.setResult("duplicate-username");
message.setMessageInfo("重复的用户名");
} else if(e.getMessage().contains(user.getNationalId())){
message.setResult("duplicate-national-id");
message.setMessageInfo("重复的身份证");
} else if(e.getMessage().contains(user.getEmail())){
message.setResult("duplicate-email");
message.setMessageInfo("重复的邮箱");
} else if(e.getMessage().contains(user.getPhoneNum())){
message.setResult("duplicate-phone");
message.setMessageInfo("重复的电话");
} else{
message.setResult(e.getCause().getMessage());
e.printStackTrace();
}
}
return message;
}
@Autowired
public WebAnnoSecurity(PasswordEncoder aPasswordEncoder,
@Lazy AuthenticationManager aAuthenticationManager,
@Lazy AuthenticationProvider aAuthenticationProvider, DataSource aDataSource,
UserDao aUserRepository)
{
passwordEncoder = aPasswordEncoder;
authenticationManager = aAuthenticationManager;
authenticationProvider = aAuthenticationProvider;
dataSource = aDataSource;
userRepository = aUserRepository;
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
/**
* 添加用户
*
* @param user
* @param groupId
* 如果添加的用户为学员,必须指定groupId。如果添加的用户为教师,则groupId为任意数字
* @return
*/
@RequestMapping(value = { "/admin/add-admin" }, method = RequestMethod.POST)
public @ResponseBody Message addUser(@RequestBody User user) {
UserInfo userInfo = (UserInfo) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
Message message = new Message();
if(!userInfo.getAuthorities().toString().contains("ROLE_ADMIN")){
message.setResult("权限错误!");
message.setMessageInfo("只有管理员才可以添加管理员!");
return message;
}
user.setCreateTime(new Date());
String password = user.getPassword() + "{" + user.getUserName().toLowerCase() + "}";
PasswordEncoder passwordEncoder = new StandardPasswordEncoderForSha1();
String resultPassword = passwordEncoder.encode(password);
user.setPassword(resultPassword);
user.setEnabled(true);
user.setCreateBy(userInfo.getUserid());
user.setUserName(user.getUserName().toLowerCase());
try {
userService.addUser(user, "ROLE_ADMIN", -1, userInfo.getRoleMap());
} catch (Exception e) {
// TODO Auto-generated catch block
if(e.getMessage().contains(user.getUserName())){
message.setResult("duplicate-username");
message.setMessageInfo("重复的用户名");
} else if(e.getMessage().contains(user.getNationalId())){
message.setResult("duplicate-national-id");
message.setMessageInfo("重复的身份证");
} else if(e.getMessage().contains(user.getEmail())){
message.setResult("duplicate-email");
message.setMessageInfo("重复的邮箱");
} else if(e.getMessage().contains(user.getPhoneNum())){
message.setResult("duplicate-phone");
message.setMessageInfo("重复的电话");
} else{
message.setResult(e.getCause().getMessage());
e.printStackTrace();
}
}
return message;
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
/**
* BCryptPasswordEncoder password encoder
* @return
*/
@Description("Standard PasswordEncoder")
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder(4);
}
public SecurityConfig(PasswordEncoder passwordEncoder,
CredentialsDetailsService credentialUserDetails) {
this.passwordEncoder = passwordEncoder;
this.credentialUserDetails = credentialUserDetails;
}
/**
* BCryptPasswordEncoder password encoder
* @return
*/
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder(4);
}
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}