springboot项目实践—登录
登录可谓一个项目中最重要的部分,毕竟登录就相当于一扇门,如果你的门起不到足够的保护作用,那使用更是无从谈起。
我对于登录这个功能也是一步步的摸索,当然,到最后我也没写一个拦截器,不过至少还是有点儿作用。
登录1.0
需求
分为店长端和店员端,输入账号密码之后店长和店员分别进入各自界面。
实现
最开始使用的版本,仅仅能识别账号密码,进入系统之后众生平等,各个用户之间没有任何差异,你甚至可以跳过登录界面,直接进入管理主界面。
// 后台管理登录
@RequestMapping(value = "/loginclerk")
public String loginclerk(Model model, HttpSession session) {
return "loginclerk";
}
// 后台管理登录验证
@RequestMapping(value = "/loginclerkCheck")
public String loginclerkCheck(Clerk clerk, HttpSession session, Model model) {
int result = cService.loginCheck(clerk);
if (result == 2) {
return "redirect:/clerk";
} else if (result == 1) {
return "redirect:/customer";
} else {
return "loginclerk";
}
}
首先,进入登录界面,输入账号密码之后通过loginclerkCheck方法进行验证,将包含账号密码的对象传入service层的方法,
// 账号验证
public int loginCheck(Clerk clerk) {
ClerkExample example = new ClerkExample();
example.createCriteria().andClerkidEqualTo(clerk.getClerkid()).andPasswordEqualTo(clerk.getPassword());
List<Clerk> list = mapper.selectByExample(example);
if (list.size() > 0) {
ClerkExample examples = new ClerkExample();
examples.createCriteria().andIdentityEqualTo(1).andClerkidEqualTo(clerk.getClerkid()).andPasswordEqualTo(clerk.getPassword());
List<Clerk> lists = mapper.selectByExample(examples);
if (lists.size() > 0) {
return 2;
}
return 1;
}
return 0;
}
对象中的账号密码和数据库中的对象进行匹配,如果最终list.size() > 0,说明可以匹配到对象,账号密码正确,在通过对象中的身份字段来区分店长和店员,分别返回不同结果,之后根据结果跳转到不同的界面。
如果世上每个人的信息都是一样的这样没问题,但是这是不可能的。
So
登录1.5
实现了个人信息的查看,但是界面跳转中出了问题。
// 登录
@RequestMapping(value = "/login")
public String toUpdate(User user, Model model, HttpSession session) {
return "login";
}
// 登录验证
@RequestMapping(value = "/loginCheck")
public String loginCheck(@RequestParam("type") Integer type, User user, HttpSession session, Model model,
RedirectAttributes attributes) {
int result = service.loginCheck(user);
if (result == 1) {
User check = service.find(user.getId());
attributes.addFlashAttribute("id", check.getId());
if (check.getRank() == 1 && type == 1) {
return "redirect:/noticeLogin";
} else if (check.getRank() == 2) {
if (type == 2) {
return "redirect:/massLogin";
} else if (type == 3) {
return "redirect:/indexLogin";
} else {
return "login";
}
} else if (check.getRank() == 3 && type == 3) {
return "redirect:/indexLogin";
} else {
if (check.getRank() == 4 && type == 4) {
return "redirect:/indexLogin";
} else {
return "login";