java – spring boot是否提供标准的登录和注册支持
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – spring boot是否提供标准的登录和注册支持,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3641字,纯文字阅读大概需要6分钟。
内容图文
![java – spring boot是否提供标准的登录和注册支持](/upload/InfoBanner/zyjiaocheng/726/7158139c03ee410e9858d19be4d103c8.jpg)
我找到了一些关于Spring Security登录和注册的教程:
http://www.baeldung.com/spring-security-login-error-handling-localization
http://www.baeldung.com/registration-with-spring-mvc-and-spring-security
但是,我现在正在使用Spring Boot,并希望找到该教程.问题是,我能找到的只是OAuth2和SSO
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/(第28点)
如果我想用Spring Boot实现一个简单的登录和注册表单,请知道如何继续?
编辑:
我在官方文档中找到了this.那会有登录功能,但是注册呢?
解决方法:
您需要UserDetailsS??ervice来存储和接收用户详细信息,当然还需要至少1个服务来实际存储用户.
例如这项服务:
@Service
public class RegistrationService {
@Resource
private MailService mailer;
@Resource
private UserDataService userDataService;
public boolean createRegistration(RegistryCredentials credentials,
MessageContext context) {
String username = credentials.getUsername();
UserData current = new UserData();
if (userDataService.isAvailable(username)) {
userDataService.addUserData(username, current);
return true;
} else {
context.addMessage(new MessageBuilder().error().source("username")
.code("username.exists").build());
return false;
}
}
public void saveUserData(RegistryCredentials credentials) {
UserData current = userDataService.getUserData(credentials
.getUsername());
current.setCity(credentials.getCity());
current.setEmail(credentials.getEmail());
current.setPassword(credentials.getPassword());
current.setStreet(credentials.getStreet());
current.setFirstname(credentials.getFirstname());
current.setLastname(credentials.getLastname());
current.setUsername(credentials.getUsername());
current.setRegistered(new Date());
Long activationKey = userDataService.updateUserData(current);
mailer.sendSubscriptionEmail(current, activationKey);
}
}
RegistryCredentials是包含用户数据字段和验证注释的标准bean.
您在注册页面上创建registryCredentials,将它们签入服务,然后服务将创建(并保留)用户详细信息.
当然,您必须使用SpringSecurity注册自己的服务实现,因此您需要在安全配置中使用它:
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth,
UserDataService userDataService) throws Exception {
auth.userDetailsService(userDataService);
}
对于简单的内存中解决方案,您可以使用如下的UserDataService:
@Service
public class UserDataService implements UserDetailsService {
private HashMap<String, UserData> userData = new HashMap<>();
private HashMap<Long, UserData> activation = new HashMap<>();
public UserDataService() {
UserData admin = new UserData();
admin.setUsername("admin");
admin.setPassword("password");
admin.setActive(true);
userData.put("admin", admin);
}
public boolean isAvailable(String username) {
return !userData.containsKey(username);
}
public void addUserData(String username, UserData data) {
userData.put(username, data);
}
public UserData getUserData(String username) {
return userData.get(username);
}
public Long updateUserData(UserData changed) {
userData.put(changed.getUsername(), changed);
Long random = new SecureRandom().nextLong();
activation.put(random, changed);
return random;
}
public UserData activateAccount(Long key) {
return activation.remove(key);
}
public boolean mayActivate(Date d, UserData data) {
long day = 86400000L;
Date reg = data.getRegistered();
reg.setTime(reg.getTime() + day);
if (d.before(reg)) {
return true;
} else {
return false;
}
}
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
UserData user = getUserData(username);
if (user != null) {
return user;
}
throw new UsernameNotFoundException("Username not found");
}
}
重要的是,在这种情况下,UserData必须实现UserDetails和Principal以便安全身份验证实际上能够使用它.
此特定解决方案创建了在首次登录之前使用的注册令牌,但这完全是可选的,因为您可以根据需要配置登录过程.
内容总结
以上是互联网集市为您收集整理的java – spring boot是否提供标准的登录和注册支持全部内容,希望文章能够帮你解决java – spring boot是否提供标准的登录和注册支持所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。