基于mybatis,springboot,mysql实现根据用户类型进行跳转
通过获取id的方式匹配角色名称实现跳转
注:这个功能使用spring-security或shiro其实更加容易实现
- 数据库
设计两个表,约束role表id为外键,即account表的role_id
account表:
role表:
- mapper层
@Repository
@Mapper
@Component
public interface AccountMapper {
@Select("select role from role where id=#{id}")
public String getAccountRoleById(@Param("id") Integer id);
;
}
- service层
@Service
public class AccountService {
@Autowired
public AccountMapper accountMapper;
public String getUserRoleById(Integer id){
return accountMapper.getAccountRoleById(id);
}
}
- controller层
这里的pagejump是登录页面跳转的操作,若实现需在实际的login(登录)的controller内加上 return “pagejump”.
此外这块代码实际上在我之前的登录检测写过,附上loginController
@Controller
public class LoginController {
@Autowired
public LoginService loginService;
@RequestMapping(value = "login",method = {RequestMethod.POST,RequestMethod.GET})
public String login(){
return "login";
}
@RequestMapping(value = "/loginPage",method = {RequestMethod.POST,RequestMethod.GET})
public String login(HttpServletRequest request, HttpSession session,Map<String,Object> map,Model model)
{
String name = request.getParameter("name");
String password = request.getParameter("password");
Account tname = loginService.login(name, password);
session.setAttribute("tname", tname);
if (tname == null) {
map.put("msg", "请输入正确的账号和密码");
return "login";
} else
return "redirect:/pagejump";
}
}
@Controller
public class PageJumpController {
@Autowired
AccountService accountService;
@RequestMapping(value = "/pagejump", method = {RequestMethod.POST,RequestMethod.GET})
public String pagejump(HttpServletRequest request,HttpSession session){
Account object = (Account) session.getAttribute("tname");
Account loginUser = object;
Integer id = loginUser.getRole_id();
String role = accountService.getUserRoleById(id);
{
if (role.equals("sysmanager")) {
return "redirect:/system";
}
if (role.equals("newsmanager")) {
return "redirect:/news";
}
return "redirect:/index";
}
}
}
- 实体层就不进行赘述了,生成相应getter,setter方法即可
写在最后:对于登录验证,权限管理这些使用spring-security还是较为实用的,当然此方法也可以实现简单的role角色判断进入不同页面,作为初学者的手写思考。有什么不对的地方希望大佬多多指点。