Commit f2a7f11e authored by 李丛阳's avatar 李丛阳

education init

parent 3314b331
package org.rcisoft.core.controller;
import org.rcisoft.core.result.Result;
import org.rcisoft.core.service.AuthenticationService;
import org.rcisoft.core.util.ResultGenerator;
import org.rcisoft.sys.user.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
/**
* Created by lcy on 17/11/24.
*/
@RestController
@RequestMapping("/auth")
public class AuthenticationController {
@Value("${jwt.header}")
private String tokenHeader;
@Autowired
private AuthenticationService authenticationServiceImpl;
/**
* 登录
* @param username
* @param password
* @return
*/
@RequestMapping(value = "${jwt.route.authentication.path}", method = RequestMethod.POST)
public Result login(@RequestParam("username")String username,
@RequestParam("password")String password){
final String token = authenticationServiceImpl.login(username, password);
Result result = ResultGenerator.genSuccessResult(token);
return result;
}
/**
* 注册
* @param addedUser
* @return
*/
@RequestMapping(value = "${jwt.route.authentication.register}", method = RequestMethod.POST)
public Result register(SysUser addedUser){
authenticationServiceImpl.register(addedUser);
return ResultGenerator.genSuccessResult();
}
@RequestMapping(value = "${jwt.route.authentication.refresh}", method = RequestMethod.GET)
public ResponseEntity<?> refreshAndGetAuthenticationToken(
HttpServletRequest request){
String token = request.getHeader(tokenHeader);
String refreshedToken = authenticationServiceImpl.refresh(token);
if(refreshedToken == null) {
return ResponseEntity.badRequest().body(null);
} else {
return ResponseEntity.ok(refreshedToken);
}
}
}
package org.rcisoft.core.service;
import org.rcisoft.sys.user.entity.SysUser;
/**
* Created by lcy on 17/11/24.
*/
public interface AuthenticationService {
/**
* 注册
* @param userToAdd
*/
void register(SysUser userToAdd);
/**
* 登录
* @param username
* @param password
* @return
*/
String login(String username, String password);
/**
* 刷新
* @param oldToken
* @return
*/
String refresh(String oldToken);
}
package org.rcisoft.core.service.impl;
import org.rcisoft.core.exception.ServiceException;
import org.rcisoft.core.result.ResultExceptionEnum;
import org.rcisoft.core.service.AuthenticationService;
import org.rcisoft.core.util.JwtUtil;
import org.rcisoft.sys.user.dao.SysUserMapper;
import org.rcisoft.sys.user.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/**
* Created by lcy on 17/11/24.
*/
@Service
@Transactional(readOnly = true,propagation = Propagation.NOT_SUPPORTED)
public class AuthenticationServiceImpl implements AuthenticationService {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private PasswordEncoder passwordEncoder;
/*@Autowired
public AuthenticationServiceImpl(AuthenticationManager authenticationManager,
UserDetailsService userDetailsService,
SysUserMapper sysUserMapper,
PasswordEncoder passwordEncoder) {
this.authenticationManager = authenticationManager;
this.userDetailsService = userDetailsService;
this.sysUserMapper = sysUserMapper;
this.passwordEncoder = passwordEncoder;
}*/
@Value("${jwt.tokenHead}")
private String tokenHead;
@Transactional(propagation = Propagation.REQUIRED,readOnly = false)
@Override
public void register(SysUser userToAdd) {
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
List<SysUser> sysUser = sysUserMapper.selectByExample(example);
if (sysUser.size() > 0)
throw new ServiceException(ResultExceptionEnum.USER_EXISTS);
userToAdd.setPassword(passwordEncoder.encode(userToAdd.getPassword()));
int result = sysUserMapper.insertSelective(userToAdd);
if(result==0)
throw new ServiceException(ResultExceptionEnum.SAVE_ERROR);
}
@Override
public String login(String username, String password) {
UsernamePasswordAuthenticationToken upToken = new UsernamePasswordAuthenticationToken(username, password);
//进入到 UserDetailsService loadUserByUsername 方法
final Authentication authentication = authenticationManager.authenticate(upToken);
SecurityContextHolder.getContext().setAuthentication(authentication);
final UserDetails userDetails = userDetailsService.loadUserByUsername(username);
final String token = JwtUtil.generateToken(userDetails);
return token;
}
@Override
public String refresh(String oldToken) {
return null;
}
}
package org.rcisoft.core.service.impl;
import org.rcisoft.core.util.JwtUserFactory;
import org.rcisoft.sys.user.dao.SysUserMapper;
import org.rcisoft.sys.user.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/**
* Created by lcy on 17/11/21.
*/
@Service
public class JwtUserDetailServiceImpl implements UserDetailsService {
@Autowired
private SysUserMapper sysUserMapper;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//调用持久层从数据库获取用户信息
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
List<SysUser> sysUser = sysUserMapper.selectByExample(example);
if (sysUser == null || sysUser.size() == 0)
throw new UsernameNotFoundException("用户名不存在");
/*List<SysRole> roles = sysRoleRepository.findRolesByUserId(sysUser.getId()); //根据用户id或者用户权限列表
if (CollectionUtils.isEmpty(roles))
roles = Collections.emptyList();
sysUser.setRoles(roles);*/
return JwtUserFactory.create(sysUser.get(0));
}
}
......@@ -19,7 +19,7 @@ public final class JwtUserFactory {
public static JwtUser create(SysUser user){
return new JwtUser(
user.getBusinessId(),
user.getUsername(),
user.getLoginName(),
user.getPassword(),
new ArrayList<GrantedAuthority>()
);
......
package org.rcisoft.sys.user.controller;
import org.rcisoft.sys.model.AjaxResponse;
import org.rcisoft.core.result.Result;
import org.rcisoft.sys.user.entity.SysUser;
import org.rcisoft.sys.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -17,14 +17,14 @@ public class UserController {
private UserService userServiceImpl;
@RequestMapping(value = "/addUser")
public AjaxResponse addUser(SysUser user, AjaxResponse response){
public Result addUser(SysUser user, Result result){
try{
userServiceImpl.addUser(user);
response.setErrorMessage("添加失败",null);
//response.setErrorMessage("添加失败",null);
}catch (Exception e){
e.printStackTrace();
response.setErrorMessage(e.getMessage(),"");
//response.setErrorMessage(e.getMessage(),"");
}
return response;
return result;
}
}
......@@ -24,7 +24,7 @@ public class SysUser extends IdEntity<SysUser> {
/** 密码 */
private String password;
/** 用户名 */
private String username;
private String loginName;
/** 用户名 */
private String name;
}
......@@ -11,7 +11,7 @@ logging:
org.springframework.web: DEBUG
druid:
url: jdbc:mysql://127.0.0.1:3306/boot?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
url: jdbc:mysql://127.0.0.1:3306/edu_db?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
username: root
password: cy
initial-size: 1
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.rcisoft.sys.user.dao.SysUserMapper">
<resultMap id="BaseResultMap" type="org.rcisoft.sys.user.entity.SysUser">
<id column="BUSINESS_ID" jdbcType="VARCHAR" property="businessId" />
<result column="loginName" jdbcType="VARCHAR" property="login_name" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="PASSWORD" jdbcType="VARCHAR" property="password" />
<result column="email" jdbcType="VARCHAR" property="email" />
<result column="phone" jdbcType="VARCHAR" property="phone" />
<!--dataEntity-->
<result column="remarks" jdbcType="VARCHAR" property="remarks" />
<result column="CREATE_BY" property="createBy" jdbcType="VARCHAR" />
<result column="UPDATE_BY" property="updateBy" jdbcType="VARCHAR" />
<result column="DEL_FLAG" property="delFlag" jdbcType="VARCHAR" />
<result column="FLAG" property="flag" jdbcType="VARCHAR" />
<result column="update_date" property="updateDate" jdbcType="TIMESTAMP" />
<result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
</resultMap>
</mapper>
\ No newline at end of file
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