用户信息增强和基础controller
This commit is contained in:
@@ -41,13 +41,14 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- h2 -->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.json/json -->
|
||||
|
||||
<!-- json -->
|
||||
<dependency>
|
||||
<groupId>org.json</groupId>
|
||||
<artifactId>json</artifactId>
|
||||
@@ -74,7 +75,6 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<!-- 阿里系的Druid依赖包 -->
|
||||
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
@@ -91,12 +91,10 @@
|
||||
<groupId>net.sf.ehcache</groupId>
|
||||
<artifactId>ehcache</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.yaoyuan.jiscuss.controller;
|
||||
|
||||
import com.yaoyuan.jiscuss.entity.UserInfo;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContext;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.Enumeration;
|
||||
|
||||
/**
|
||||
* @author yaoyuan2.chu
|
||||
* @Title: BaseController
|
||||
* @Package com.yaoyuan.jiscuss.controller
|
||||
* @Description: BaseController
|
||||
* @date 2020/7/16 14:36
|
||||
*/
|
||||
public class BaseController {
|
||||
|
||||
/**
|
||||
* 获取当前用户
|
||||
* @return
|
||||
*/
|
||||
protected UserInfo getUserInfo(HttpServletRequest request){
|
||||
UserInfo user = null;
|
||||
//获得session对象
|
||||
HttpSession session = request.getSession();
|
||||
//取出session域中所有属性名
|
||||
Enumeration attributeNames = session.getAttributeNames();
|
||||
while (attributeNames.hasMoreElements()) {
|
||||
System.out.println(attributeNames.nextElement());
|
||||
}
|
||||
//SPRING_SECURITY_CONTEXT
|
||||
Object spring_security_context = session.getAttribute("SPRING_SECURITY_CONTEXT");
|
||||
System.out.println(spring_security_context);
|
||||
SecurityContext securityContext = (SecurityContext) spring_security_context;
|
||||
if(securityContext!=null){
|
||||
//获得认证信息
|
||||
Authentication authentication = securityContext.getAuthentication();
|
||||
//获得用户详情
|
||||
Object principal = authentication.getPrincipal();
|
||||
user = (UserInfo) principal;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Controller;
|
||||
* 用户消息控制器
|
||||
*/
|
||||
@Controller
|
||||
public class UserMsgController {
|
||||
public class UserMsgController extends BaseController {
|
||||
//首页最新消息
|
||||
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Controller;
|
||||
* 其他控制器——积分/权限等
|
||||
*/
|
||||
@Controller
|
||||
public class UserOtherController {
|
||||
public class UserOtherController extends BaseController {
|
||||
|
||||
//用户积分获取
|
||||
}
|
||||
|
||||
@@ -4,13 +4,14 @@ import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import com.yaoyuan.jiscuss.entity.UserInfo;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -28,7 +29,7 @@ import com.yaoyuan.jiscuss.service.ITagsService;
|
||||
* 主题帖子评论控制器
|
||||
*/
|
||||
@Controller
|
||||
public class UserPostController {
|
||||
public class UserPostController extends BaseController {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(UserPostController.class);
|
||||
|
||||
@@ -47,13 +48,15 @@ public class UserPostController {
|
||||
|
||||
//查看主题详情
|
||||
@RequestMapping("/getdiscussionsbyid")
|
||||
public String getDiscussionsById(HttpServletRequest request,Map<String, Object> map,@RequestParam("id") Integer id) {
|
||||
public String getDiscussionsById(HttpServletRequest request, ModelMap map, @RequestParam("id") Integer id) {
|
||||
logger.info(">>> getDiscussionsById{}",id);
|
||||
|
||||
Discussions discussions = discussionsService.findOne(id);
|
||||
HttpSession session=request.getSession();
|
||||
map.put("discussions", discussions);
|
||||
map.put("username", session.getAttribute("username"));
|
||||
UserInfo user = getUserInfo(request);
|
||||
if(user != null){
|
||||
map.put("username", user.getUsername());
|
||||
}
|
||||
return "discussions";
|
||||
}
|
||||
|
||||
@@ -66,10 +69,11 @@ public class UserPostController {
|
||||
|
||||
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
|
||||
HttpServletRequest request = servletRequestAttributes.getRequest();
|
||||
|
||||
HttpSession session=request.getSession();
|
||||
discussions.setLast_user_id( (Integer)session.getAttribute("userid"));
|
||||
discussions.setCreate_id( (Integer)session.getAttribute("userid"));
|
||||
UserInfo user = getUserInfo(request);
|
||||
if(user != null){
|
||||
discussions.setLast_user_id( user.getId());
|
||||
discussions.setCreate_id( user.getId());
|
||||
}
|
||||
discussions.setCreate_time(new Date());
|
||||
|
||||
Discussions saveDiscussions = discussionsService.insert(discussions);
|
||||
@@ -100,8 +104,10 @@ public class UserPostController {
|
||||
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
|
||||
HttpServletRequest request = servletRequestAttributes.getRequest();
|
||||
|
||||
HttpSession session=request.getSession();
|
||||
tags.setCreate_id( (Integer)session.getAttribute("userid"));
|
||||
UserInfo user = getUserInfo(request);
|
||||
if(user != null){
|
||||
tags.setCreate_id( user.getId());
|
||||
}
|
||||
tags.setCreate_time(new Date());
|
||||
|
||||
Tags saveTags = tagsService.insert(tags);
|
||||
|
||||
@@ -2,37 +2,30 @@ package com.yaoyuan.jiscuss.controller;
|
||||
|
||||
import com.yaoyuan.jiscuss.entity.Discussions;
|
||||
import com.yaoyuan.jiscuss.entity.Tags;
|
||||
import com.yaoyuan.jiscuss.entity.UserInfo;
|
||||
import com.yaoyuan.jiscuss.entity.Users;
|
||||
import com.yaoyuan.jiscuss.service.IDiscussionsService;
|
||||
import com.yaoyuan.jiscuss.service.ITagsService;
|
||||
import com.yaoyuan.jiscuss.service.IUsersService;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContext;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.core.userdetails.User;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 用户页面系统控制器
|
||||
*/
|
||||
@Controller
|
||||
public class UserSystemController {
|
||||
public class UserSystemController extends BaseController {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(UserSystemController.class);
|
||||
|
||||
@@ -47,7 +40,7 @@ public class UserSystemController {
|
||||
|
||||
//首页
|
||||
@RequestMapping("/")
|
||||
public String home(HttpServletRequest request,Map<String, Object> map) {
|
||||
public String home(HttpServletRequest request, ModelMap map) {
|
||||
logger.info(">>> index");
|
||||
List<Users> userall = usersService.getAllList();
|
||||
logger.info(">>> 第一遍的全部用户:"+userall);
|
||||
@@ -56,26 +49,6 @@ public class UserSystemController {
|
||||
logger.info(">>> 第二遍的全部用户:"+useral2);
|
||||
|
||||
String username ="";
|
||||
//获得session对象
|
||||
HttpSession session = request.getSession();
|
||||
//取出session域中所有属性名
|
||||
Enumeration attributeNames = session.getAttributeNames();
|
||||
while (attributeNames.hasMoreElements()) {
|
||||
System.out.println(attributeNames.nextElement());
|
||||
}
|
||||
//SPRING_SECURITY_CONTEXT
|
||||
Object spring_security_context = session.getAttribute("SPRING_SECURITY_CONTEXT");
|
||||
System.out.println(spring_security_context);
|
||||
SecurityContext securityContext = (SecurityContext) spring_security_context;
|
||||
if(securityContext!=null){
|
||||
//获得认证信息
|
||||
Authentication authentication = securityContext.getAuthentication();
|
||||
//获得用户详情
|
||||
Object principal = authentication.getPrincipal();
|
||||
User user = (User) principal;
|
||||
username = user.getUsername();
|
||||
System.out.println(username);
|
||||
}
|
||||
|
||||
//分页获取主题帖子
|
||||
// List<Discussions> allDiscussions = discussionsService.getAllList();
|
||||
@@ -98,7 +71,11 @@ public class UserSystemController {
|
||||
map.put("allDiscussions", allDiscussions);
|
||||
map.put("pageDiscussions", pageNumList);
|
||||
map.put("allTags", allTags);
|
||||
map.put("username", username);
|
||||
UserInfo user = getUserInfo(request);
|
||||
if(user != null){
|
||||
map.put("username", user.getUsername());
|
||||
map.put("data", "Jiscuss 用户:" + user.getUsername());
|
||||
}
|
||||
return "index";
|
||||
}
|
||||
|
||||
@@ -146,7 +123,7 @@ public class UserSystemController {
|
||||
//登录页
|
||||
@GetMapping("/login")
|
||||
public String login(@RequestParam(value = "error", required = false) String error,
|
||||
@RequestParam(value = "logout", required = false) String logout,Map<String, Object> map) {
|
||||
@RequestParam(value = "logout", required = false) String logout,ModelMap map) {
|
||||
if (error != null) {
|
||||
map.put("msg", "您输入的用户名密码错误!");
|
||||
return "login";
|
||||
@@ -160,16 +137,16 @@ public class UserSystemController {
|
||||
}
|
||||
|
||||
//退出
|
||||
@PostMapping(value = "/loginout")
|
||||
@ResponseBody
|
||||
public String logout(HttpServletRequest request, HttpServletResponse response){
|
||||
JSONObject resultobj = new JSONObject();
|
||||
HttpSession session=request.getSession();
|
||||
session.invalidate();
|
||||
resultobj.put("msg", "用户退出成功");
|
||||
resultobj.put("flag", true);
|
||||
return resultobj.toString(); //
|
||||
}
|
||||
// @PostMapping(value = "/loginout")
|
||||
// @ResponseBody
|
||||
// public String logout(HttpServletRequest request, HttpServletResponse response){
|
||||
// JSONObject resultobj = new JSONObject();
|
||||
// HttpSession session=request.getSession();
|
||||
// session.invalidate();
|
||||
// resultobj.put("msg", "用户退出成功");
|
||||
// resultobj.put("flag", true);
|
||||
// return resultobj.toString(); //
|
||||
// }
|
||||
|
||||
//注册
|
||||
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.yaoyuan.jiscuss.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author yaoyuan2.chu
|
||||
* @Title:
|
||||
* @Package com.yaoyuan.jiscuss.entity
|
||||
* @Description:
|
||||
* @date 2020/7/16 14:55
|
||||
*/
|
||||
@Data
|
||||
public class UserInfo implements UserDetails{
|
||||
|
||||
private Collection<GrantedAuthority> authorities;
|
||||
private String password;
|
||||
private String username;
|
||||
private String phone;
|
||||
private Integer age;
|
||||
private Integer id;
|
||||
private String realname;
|
||||
private String email;
|
||||
private String gender;
|
||||
private Integer level;
|
||||
private Integer flag;
|
||||
|
||||
public UserInfo() {
|
||||
}
|
||||
|
||||
public UserInfo(Collection<GrantedAuthority> authorities, Integer id, String password, String username, String phone) {
|
||||
this.authorities = authorities;
|
||||
this.id = id;
|
||||
this.password = password;
|
||||
this.username = username;
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||
return authorities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAccountNonExpired() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAccountNonLocked() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCredentialsNonExpired() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "UserInfo{" +
|
||||
"authorities=" + authorities +
|
||||
", password='" + password + '\'' +
|
||||
", username='" + username + '\'' +
|
||||
", id='" + id + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.yaoyuan.jiscuss.service.impl;
|
||||
|
||||
import com.yaoyuan.jiscuss.entity.UserInfo;
|
||||
import com.yaoyuan.jiscuss.entity.Users;
|
||||
import com.yaoyuan.jiscuss.service.IUsersService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -34,7 +35,7 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
||||
private PasswordEncoder passwordEncoder;
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
public UserInfo loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
// 通过用户名从数据库获取用户信息
|
||||
Users userInfo = userInfoService.getByUsername(username);
|
||||
if (userInfo == null) {
|
||||
@@ -49,11 +50,13 @@ public class UserDetailServiceImpl implements UserDetailsService {
|
||||
// 角色必须以`ROLE_`开头,数据库中没有,则在这里加
|
||||
authorities.add(new SimpleGrantedAuthority("ROLE_" + role));
|
||||
|
||||
return new User(
|
||||
userInfo.getUsername(),
|
||||
return new UserInfo(
|
||||
authorities,
|
||||
userInfo.getId(),
|
||||
// 因为数据库是明文,所以这里需加密密码
|
||||
passwordEncoder.encode(userInfo.getPassword()),
|
||||
authorities
|
||||
userInfo.getUsername(),
|
||||
userInfo.getPhone()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user