这次实现的 注册与登录
功能需要进行 数据库
的基本操作,而且是 前后端分离式
开发。总的来说就是首先进行数据库的设计,然后根据数据库进行编写服务端 API接口
,接着来到 客户端
或 移动端
,进行登录与注册的界面设计,接收服务端提供的数据并显示在界面上。本文章主要进行 后端API接口
设计。后面会进行前端框架 数据交互
设计。
登录与注册
的需求,数据库的用户表结构如下:
持久化映射
,生成用户表的模型类 Persistence
一栏,选中项目,鼠标右键,点击最底下一个选项。
Users
,添加 主键生成器
。在注解 @Id
下方添加以下代码: //指定生成器名称 @GeneratedValue(generator = "uuid2" ) @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator" )
package edu.ynmd.cms.dao; import edu.ynmd.cms.model.Users; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; public interface UsersDao extends JpaRepository<Users,String> { @Query("select u from Users u where u.username=:username and u.pass=:pass") List<Users> getUsersByUsernameAndPass(@Param("username")String username, @Param("pass") String pass); }
ManageService
里面进行增删查改方法的定义。 //用户表 Users saveUser(Users users); boolean deleteUser(String id); Users getUser(String id); Users getUserByUserNameAndPass(String username,String pass);
MangeServiceImpl
里面进行具体方法的实现。 //*****************************用户表增删查改开始********************************* @Override public Users saveUser(Users users) { try { return usersDao.save(users); } catch (Exception e) { e.printStackTrace(); return null; } } @Override public boolean deleteUser(String id) { try { usersDao.deleteById(id); return true; } catch (Exception e) { e.printStackTrace(); } return false; } @Override public Users getUser(String id) { Optional<Users> temp=usersDao.findById(id); return temp.isPresent()?temp.get():null; } @Override public Users getUserByUserNameAndPass(String username, String pass) { List<Users> ul=usersDao.getUsersByUsernameAndPass(username,pass); if(ul.size()>0){ return ul.get(0); } return null; }
//用户登录方法 @PostMapping("/login") @ResponseBody public HashMap<String,String> login( @RequestBody Account account) throws IOException { Users u=manageService.getUserByUserNameAndPass(account.username,account.password); //获取用户表的用户名和密码 if(u!=null){ String jwt= JwtUtil.generateToken(u.getRoleid(),u.getUsersid()); //获取用户角色和用户ID return new HashMap<String,String>(){{ put("msg","ok"); put("token",jwt); put("role",u.getRoleid()); // put("role","admin"); }}; } else { return new HashMap<String,String>(){{ put("msg","error"); put("token","error"); }}; } } public static class Account{ public String username; public String password; } //用户注册 @PostMapping("saveUser") @ResponseBody public HashMap saveUser(@RequestBody Users users) throws Exception{ HashMap m=new HashMap(); try { users.setRoleid("member"); manageService.saveUser(users); m.put("msg","ok"); } catch (Exception e) { e.printStackTrace(); m.put("msg","error"); } return m; }
最后,启动项目进行测试。