需求想要这样的效果,新手入门里登录页面登陆的话,如果后端返回“验证码错误”这样类似的信息,就让他显示在原来的登陆页面上,如果成功就跳转到别的jsp或者转发(或者重定向)到别的路径上,所以一个入口函数就要判断两个返回路径了,nutz这我只找到了这样的(@Ok("jsp:${obj == null ? 'jsp.user.login' : 'jsp.user.home'}")),但以我对nutz的了解肯定不止这一个方法,我想多学学更好的实现方法,至少能不能告诉我上边这样的实现方式是不是最优的
@At
@POST
public Object login(@Param("username")String username,
@Param("password")String password,
@Param("captcha")String captcha,
@Attr(scope=Scope.SESSION, value="nutz_captcha")String _captcha,
HttpSession session) {
NutMap re = new NutMap();
if (!Toolkit.checkCaptcha(_captcha, captcha)) {
return re.setv("ok", false).setv("msg", "验证码错误");
}
int userId = userService.fetch(username, password);
if (userId < 0) {
return re.setv("ok", false).setv("msg", "用户名或密码错误");
} else {
session.setAttribute("me", userId);
// 完成nutdao_realm后启用.
SecurityUtils.getSubject().login(new SimpleShiroToken(userId));
//设置登陆失效时长,默认配置为30分钟
//SecurityUtils.getSubject().getSession().setTimeout(5000);
return re.setv("ok", true);
}
}