diff --git a/pom.xml b/pom.xml
index 817de48..7095c5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,13 +41,14 @@
org.springframework.boot
spring-boot-starter-websocket
-
+
com.h2database
h2
runtime
-
+
+
org.json
json
@@ -74,7 +75,6 @@
compile
-
com.alibaba
druid-spring-boot-starter
@@ -91,12 +91,10 @@
net.sf.ehcache
ehcache
-
-
org.springframework.boot
spring-boot-maven-plugin
diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/BaseController.java b/src/main/java/com/yaoyuan/jiscuss/controller/BaseController.java
new file mode 100644
index 0000000..33db9f0
--- /dev/null
+++ b/src/main/java/com/yaoyuan/jiscuss/controller/BaseController.java
@@ -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;
+ }
+
+}
diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserMsgController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserMsgController.java
index 99b967f..85927c4 100644
--- a/src/main/java/com/yaoyuan/jiscuss/controller/UserMsgController.java
+++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserMsgController.java
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Controller;
* 用户消息控制器
*/
@Controller
-public class UserMsgController {
+public class UserMsgController extends BaseController {
//首页最新消息
}
diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserOtherController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserOtherController.java
index 41ada64..3efc54c 100644
--- a/src/main/java/com/yaoyuan/jiscuss/controller/UserOtherController.java
+++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserOtherController.java
@@ -6,7 +6,7 @@ import org.springframework.stereotype.Controller;
* 其他控制器——积分/权限等
*/
@Controller
-public class UserOtherController {
+public class UserOtherController extends BaseController {
//用户积分获取
}
diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java
index 5c842c7..73a6443 100644
--- a/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java
+++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java
@@ -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 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);
@@ -99,11 +103,13 @@ 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);
JSONObject resultobj = new JSONObject();
diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java
index 6fb0dd2..0f932d6 100644
--- a/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java
+++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java
@@ -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 map) {
+ public String home(HttpServletRequest request, ModelMap map) {
logger.info(">>> index");
List 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 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 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(); //
+// }
//注册
diff --git a/src/main/java/com/yaoyuan/jiscuss/entity/UserInfo.java b/src/main/java/com/yaoyuan/jiscuss/entity/UserInfo.java
new file mode 100644
index 0000000..40576dc
--- /dev/null
+++ b/src/main/java/com/yaoyuan/jiscuss/entity/UserInfo.java
@@ -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 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 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 + '\'' +
+ '}';
+ }
+}
+
diff --git a/src/main/java/com/yaoyuan/jiscuss/service/impl/UserDetailServiceImpl.java b/src/main/java/com/yaoyuan/jiscuss/service/impl/UserDetailServiceImpl.java
index 629d951..f92f1a7 100644
--- a/src/main/java/com/yaoyuan/jiscuss/service/impl/UserDetailServiceImpl.java
+++ b/src/main/java/com/yaoyuan/jiscuss/service/impl/UserDetailServiceImpl.java
@@ -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()
);
}
}
\ No newline at end of file
diff --git a/src/main/resources/templates/myHome.ftl b/src/main/resources/templates/myHome.ftl
deleted file mode 100644
index e69de29..0000000