Spring框架下的管理员修改密码功能实现

1.前端JSP页面。  webapp——common——taglibs.jsp

<script  type = " text/javascript ">

Ext.onReady(function(){

if(undefined!=Ext.get(' navigationButtonTag ')){

Ext.Function.defer(function() {

new  Ext.Button({ 

xtype: ' button ',

iconCls: ' logout-icon ',

cls: ' pointer_btn ',

border:0,

scale: ' small ',

press: false,

renderTo: ' navigationButtonTag ',

menu:  [

{

text:' 修改密码 ',

hander:function(){

Ext.widget(" passwordChange ");

}

},

{

text:' 登出 ',

hander: function(){

location.href = ctx+' /logout '

}

}

]

});

},1000);

}

});

</script>



2.yucen——app——view——password——PasswordChange.js

Ext.define("yucen.view.password.PasswordChange", {

extend: "Ext.form.Panel",
    alias: "widget.passwordChange",
    url:ctx+"/so/changeUserPwd",
    require: [],
    autoScroll: true,
    defaults: {
        xtype: 'textfield',
        width: 300
    },
    layout: {
        type: 'vbox',
        align: 'center',
        padding: 80
    },

initComponent: function () {

 this.items = [
            {fieldLabel: '原始密码'+'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>', id: 'oldPassword', name: 'oldPwd', inputType: "password",
                allowBlank: false,
                blankText: '原始密码不能为空!',
                minLength: 5,
                maxLength: 20,
                minLengthText: "请输入6~20位密码!",
                maxLengthText: '请输入6~20位密码!'},

{fieldLabel: '新密码'+'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>', id: 'password', name: 'newPwd', inputType: "password",
                allowBlank: false,
                blankText: '新密码不能为空!',
                minLength: 6,
                maxLength: 20,
                minLengthText: "请输入6~20位密码!",
                maxLengthText: '请输入6~20位密码!',
               

validator: function () {
                    if (this.getValue() == Ext.getCmp('confirmPassword').getValue()) {
                        Ext.getCmp('confirmPassword').clearInvalid()
                    }
                    if (this.getValue() != Ext.getCmp('oldPassword').getValue()) {
                        return true;
                    } else if(Ext.getCmp('oldPassword').getValue()!=""){
                        return "新密码不能与原密码相同";
                    }

                }},

{fieldLabel: '确认密码'+'<span style="color: rgb(255, 0, 0); padding-left: 2px;">*</span>', id: 'confirmPassword', name: 'confirmPassword', inputType: "password",
                validator: function () {
                    if (this.getValue() == Ext.getCmp('password').getValue()) {
                        return true;
                    } else {
                        return "两次密码不匹配";
                    }
                },
                allowBlank: false,
                blankText: '确认密码不能为空!',
                minLength: 6,
                maxLength: 20,
                minLengthText: "请输入6~20位密码!",
                maxLengthText: '请输入6~20位密码!'
           
     },{
                xtype:'hidden',
                name:'username',
                value:'admin'
           
    }

];

this.dockedItems = [
            {
                xtype: 'toolbar',
                width: '100%',
                items: [
                    {text: '保存', action: 'changePassword'}
                ]
            }
        ],

this.callParent(arguments);

}

});



3.创建SystemUserController,并写接口:/changeUserPwd

@RequestMapping(value = "/changeUserPwd", method = RequestMethod.POST)

@ResponseBody

public  JsonObjectResponse  changeUserPwd(HttpSession  session,

@RequestParam(value = "username")  String  username,

@RequestParam(value = "oldPwd")   String  oldPwd,

@RequestParam(value = "newPwd")  String  newPwd,

HttpServletRequest  request )  throws  Exception {

if (logger.isDebugEnabled()) {
            logger.debug("--------------changeUserPwd---------------");
            logger.debug("phoneNo  = " + username);
            logger.debug("oldPwd  = " + oldPwd);
            logger.debug("newPwd  = " + newPwd);
        }


User user = userManager.getUserByUsername(username);

if (null == user) {
            logger.debug("登录已失效,请重新登录");
            logger.debug("--------------------------------------");
            return JsonObjectResponse.failResponseWithMessageCode("登录已失效,请重新登录", Constants.LOGIN_INVALID);
        } else {
            logger.debug("当前登录用户id:" + user.getId());
            logger.debug("当前登录用户手机号:" + user.getPhoneNumber());
        }

if (oldPwd.equals(newPwd)) {
            logger.debug("修改密码失败,新密码不能与原密码相同");
            logger.debug("--------------------------------------");
            return JsonObjectResponse.failResponseWithMessage("修改密码失败,新密码不能与原密码相同");
        }

try {
            boolean result = userManager.changePassword(user, newPwd, oldPwd);//changePwd for phoneNo oldPwd newPwd
            if (result) {
                logger.debug("修改密码成功");
                logger.debug("--------------------------------------");
                return JsonObjectResponse.successResponseWithMessage("修改密码成功");
           
 } else {
                logger.debug("修改密码失败,原密码输入错误");
                logger.debug("--------------------------------------");
                return JsonObjectResponse.failResponseWithMessage("修改密码失败,原密码输入错误");
           
 }
}catch (Exception e) {
            e.printStackTrace();
            logger.debug("修改密码失败,原密码输入错误");
            logger.debug("--------------------------------------");
            return JsonObjectResponse.failResponseWithMessage("修改密码失败,原密码输入错误");
        }
    }


4.两个service方法getUserByUsername和changePassword

    @Override
     public User getUserByUsername(final String username) throws UsernameNotFoundException {
        return (User) userDao.loadUserByUsername(username);
    }


    @Override
    public boolean changePassword(User user, String password,String oldPassword) {
        if(passwordEncoder.matches(oldPassword,user.getPassword())){
            User savedUser=this.getUser(user.getId()+"");
            savedUser.setPassword(passwordEncoder.encode(password));
            userDao.save(savedUser);
            log.info("系统用户的密码已经修改为"+password);
            return true;
        }else{
            return false;
        }
    }


5.Dao层 UserDaoHibernate 的函数:

public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        List users = getSession().createCriteria(User.class).add(Restrictions.eq("username", username)).list();
        if (users == null || users.isEmpty()) {
            throw new UsernameNotFoundException("user '" + username + "' not found...");
        } else {
            return (UserDetails) users.get(0);
        }
    }














  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值