@RestController
@RequestMapping("/user")
public class Controller {
@Autowired AuthenticationManager authenticationManager;
@Autowired UserService userService;
@RequestMapping(value="/login", method=RequestMethod.POST)
public AccessToken logsin(
@RequestBody AuthenticationRequest request, HttpSession session
) {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken (request.getId(), request.getPassword());
Authentication authentication = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
session.setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY,
SecurityContextHolder.getContext());
AccessToken token1 = new AccessToken();
token1.setUsername(authentication.getName());
token1.setAuthorities(authentication.getAuthorities());
token1.setToken(session.getId());
Authentication a = SecurityContextHolder.getContext().getAuthentication();
System.out.println("a.isAuthenticated : "+ a.isAuthenticated());
return token1;
}
public class AccessToken {
private String username;
private Collection authorities;
private String token;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Collection getAuthorities() {
return authorities;
}
public void setAuthorities(Collection authorities) {
this.authorities = authorities;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
如果我向登录进程“/user/login”发送请求,System.out.println的值(“a.isauthenticated:”+a.isauthenticated());是“true”
然后我又回到了AccessToken,
{
"username": "myid1",
"authorities": [
{
"authority": "user"
}
],
"token": "3D31F32383859DB145320941122CA189"
}
并且我为令牌身份验证设置了一个过滤器类和HttpSessionStrategy bean
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class SimpleCorsFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
System.out.println("filter!");
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Expose-Headers", "x-auth-token");
response.setHeader("Access-Control-Allow-Credentials", "x-auth-token");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
,
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired UserService userService;
@Autowired AuthenticationProvider provider;
@Autowired BCryptPasswordEncoder encoder;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
.antMatchers("/user/login").permitAll()
.antMatchers("/main").authenticated()
.antMatchers("main").authenticated()
.antMatchers("/**").authenticated()
.anyRequest().authenticated()
.and()
.logout()
;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService)
.passwordEncoder(encoder);
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public HttpSessionStrategy httpSessionStrategy() {
return new HeaderHttpSessionStrategy();
}
本文向大家介绍Android利用爬虫实现模拟登录的实现实例,包括了Android利用爬虫实现模拟登录的实现实例的使用技巧和注意事项,需要的朋友参考一下 Android利用爬虫实现模拟登录的实现实例 为了用手机登录校网时不用一遍一遍的输入账号密码,于是决定用爬虫抓取学校登录界面,然后模拟填写本次保存的账号、密码,模拟点击登录按钮。实现过程折腾好几个。 一开始选择的是htmlunit解析登录界面htm
本文向大家介绍Springboot+SpringSecurity+JWT实现用户登录和权限认证示例,包括了Springboot+SpringSecurity+JWT实现用户登录和权限认证示例的使用技巧和注意事项,需要的朋友参考一下 如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于
目前,我正在使用以下内容将用户登录到我的应用程序中。然而,我想使用一个角函数来实际执行登录。为此,我想创建一个Rest网络服务来进行身份验证,但是我在SO上看到的所有示例都使用我认为被贬低的用户。我还希望该服务返回有关用户的信息。 我要问的是如何将MyUserDetailsService更改为用作登录的restful服务,或者如何创建一个可用于登录的服务,该服务将在登录后返回用户对象。 这是我的a
本文向大家介绍SpringBoot 配合 SpringSecurity 实现自动登录功能的代码,包括了SpringBoot 配合 SpringSecurity 实现自动登录功能的代码的使用技巧和注意事项,需要的朋友参考一下 自动登录是我们在软件开发时一个非常常见的功能,例如我们登录 QQ 邮箱: 很多网站我们在登录的时候都会看到类似的选项,毕竟总让用户输入用户名密码是一件很麻烦的事。 自动登录功能
本文向大家介绍利用DataSet部分功能实现网站登录,包括了利用DataSet部分功能实现网站登录的使用技巧和注意事项,需要的朋友参考一下 首先,我之前必须完成过注册,并把个人信息存入数据库中。 其次,这部分的个别对象是存于某些文档中的,需要引用命名空间。 以上所述是小编给大家介绍的利用DataSet部分功能实现网站登录 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
本文向大家介绍php利用cookie实现自动登录的方法,包括了php利用cookie实现自动登录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php利用cookie实现自动登录的方法。分享给大家供大家参考。具体实现方法如下: html前端页面代码如下: 后端PHP代码如下: 希望本文所述对大家的PHP程序设计有所帮助。