Commit 1de6a7c2 authored by 杨伊博's avatar 杨伊博

get user is ok

parent f594aecb
package com.us.example.controller; package com.us.example.controller;
import com.us.example.dao.UserDao; import com.us.example.domain.SysUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.userdetails.User;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/** /**
* Created by yangyibo on 17/3/1. * Created by yangyibo on 17/3/1.
*/ */
@RestController @RestController
public class LoginController { public class LoginController {
@Autowired
UserDao userDao;
@RequestMapping(value = "/login") @RequestMapping(value = "/login")
@ResponseBody @ResponseBody
//用户名密码是用base64 加密 原文为 admin:admin 即 用户名:密码 内容是放在request.getHeader 的 "authorization" 中 //用户名密码是用base64 加密 原文为 admin:admin 即 用户名:密码 内容是放在request.getHeader 的 "authorization" 中
public Object login(HttpServletRequest request, @RequestParam(name = "logout", required = false) String logout) { public Object login(@AuthenticationPrincipal SysUser loginedUser, @RequestParam(name = "logout", required = false) String logout) {
if (logout != null) { if (logout != null) {
return null; return null;
} }
SecurityContext sc = (SecurityContext) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT"); if (loginedUser != null) {
User user = (User) sc.getAuthentication().getPrincipal(); return loginedUser;
return userDao.findByUserName(user.getUsername()); }
return null;
} }
} }
package com.us.example.domain; package com.us.example.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
* Created by yangyibo on 17/1/17. * Created by yangyibo on 17/1/17.
*/ */
public class SysUser { public class SysUser implements UserDetails { // implements UserDetails 用于登录时 @AuthenticationPrincipal 标签取值
private Integer id; private Integer id;
private String username; private String username;
@JsonIgnore
private String password; private String password;
private List<SysRole> roles; private List<SysRole> roles;
private List<? extends GrantedAuthority> authorities;
public Integer getId() { public Integer getId() {
return id; return id;
...@@ -45,4 +52,35 @@ public class SysUser { ...@@ -45,4 +52,35 @@ public class SysUser {
this.roles = roles; this.roles = roles;
} }
@JsonIgnore
@Override
public boolean isAccountNonExpired() {
return true;
}
@JsonIgnore
@Override
public boolean isAccountNonLocked() {
return true;
}
@JsonIgnore
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@JsonIgnore
@Override
public boolean isEnabled() {
return true;
}
@JsonIgnore
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return authorities;
}
public void setGrantedAuthorities(List<? extends GrantedAuthority> authorities) {
this.authorities = authorities;
}
} }
...@@ -3,6 +3,7 @@ package com.us.example.security; ...@@ -3,6 +3,7 @@ package com.us.example.security;
import com.us.example.dao.UserDao; import com.us.example.dao.UserDao;
import com.us.example.domain.SysRole; import com.us.example.domain.SysRole;
import com.us.example.domain.SysUser; import com.us.example.domain.SysUser;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
...@@ -21,6 +22,7 @@ public class CustomUserService implements UserDetailsService { //自定义UserDe ...@@ -21,6 +22,7 @@ public class CustomUserService implements UserDetailsService { //自定义UserDe
@Autowired @Autowired
UserDao userDao; UserDao userDao;
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(CustomUserService.class);
@Override @Override
public UserDetails loadUserByUsername(String username) { //重写loadUserByUsername 方法获得 userdetails 类型用户 public UserDetails loadUserByUsername(String username) { //重写loadUserByUsername 方法获得 userdetails 类型用户
...@@ -34,11 +36,10 @@ public class CustomUserService implements UserDetailsService { //自定义UserDe ...@@ -34,11 +36,10 @@ public class CustomUserService implements UserDetailsService { //自定义UserDe
for(SysRole role:user.getRoles()) for(SysRole role:user.getRoles())
{ {
authorities.add(new SimpleGrantedAuthority(role.getName())); authorities.add(new SimpleGrantedAuthority(role.getName()));
System.out.println(role.getName()); logger.info("loadUserByUsername: " + user);
} }
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.setGrantedAuthorities(authorities); //用于登录时 @AuthenticationPrincipal 标签取值
user.getPassword(), authorities); return user;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment