修改UserModule

打开UserModule, 先加一个属性UserService

  1. @Inject protected UserService userService;

因为密码加密了,所以登陆方法要改一下

请注意一下 SecurityUtils 那一行.

  1. @At
  2. @Filters // 覆盖UserModule类的@Filter设置,因为登陆可不能要求是个已经登陆的Session
  3. @POST
  4. public Object login(@Param("username")String username,
  5. @Param("password")String password,
  6. @Param("captcha")String captcha,
  7. @Attr(scope=Scope.SESSION, value="nutz_captcha")String _captcha,
  8. HttpSession session) {
  9. NutMap re = new NutMap();
  10. if (!Toolkit.checkCaptcha(_captcha, captcha)) {
  11. return re.setv("ok", false).setv("msg", "验证码错误");
  12. }
  13. int userId = userService.fetch(username, password);
  14. if (userId < 0) {
  15. return re.setv("ok", false).setv("msg", "用户名或密码错误");
  16. } else {
  17. session.setAttribute("me", userId);
  18. // 完成nutdao_realm后启用.
  19. // SecurityUtils.getSubject().login(new SimpleShiroToken(userId));
  20. return re.setv("ok", true);
  21. }
  22. }

严重注意一下@Param(“username”) 待会要修改登陆页面的表单哦

同样的,修改一下add方法

  1. @At
  2. public Object add(@Param("..")User user) { // 两个点号是按对象属性一一设置
  3. NutMap re = new NutMap();
  4. String msg = checkUser(user, true);
  5. if (msg != null){
  6. return re.setv("ok", false).setv("msg", msg);
  7. }
  8. user = userService.add(user.getName(), user.getPassword());
  9. return re.setv("ok", true).setv("data", user);
  10. }

还有update方法

  1. @At
  2. public Object update(@Param("password")String password, @Attr("me")int me) {
  3. if (Strings.isBlank(password) || password.length() < 6)
  4. return new NutMap().setv("ok", false).setv("msg", "密码不符合要求");
  5. userService.updatePassword(me, password);
  6. return new NutMap().setv("ok", true);
  7. }