用户登录实现
来源:互联网 发布:淘宝大尺度店铺 编辑:程序博客网 时间:2024/04/29 16:06
ps:这里我们需要用到shrio的权限控制和登录验证。
1、创建好表之后,需要对原始密码进行处理然后存到数据库。这里用到md5加密算法:
import org.apache.shiro.crypto.hash.Md5Hash;public class md5Util {public static String md5(String str,String salt){return new Md5Hash(str,salt).toString();}}
2、自定义登录验证规则,验证成功则返回当前用户信息package com.hxm.realm;import javax.annotation.Resource;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.AuthenticationInfo;import org.apache.shiro.authc.AuthenticationToken;import org.apache.shiro.authc.SimpleAuthenticationInfo;import org.apache.shiro.authz.AuthorizationInfo;import org.apache.shiro.realm.AuthorizingRealm;import org.apache.shiro.subject.PrincipalCollection;import com.hxm.entity.Blogger;import com.hxm.service.BloggerService;/** * 自定义Realm * @author Administrator * */public class MyRealm extends AuthorizingRealm{@Resourceprivate BloggerService bloggerService;/** * 为当前的登录的用户角色和权限 */@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {return null;}/** * 验证当前登录的用户 */@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {String userName=(String) token.getPrincipal();Blogger blogger=bloggerService.getByUserName(userName);if(blogger!=null){SecurityUtils.getSubject().getSession().setAttribute("currentUser", blogger); // 把当前用户信息存到session中AuthenticationInfo authcInfo=new SimpleAuthenticationInfo(blogger.getUserName(), blogger.getPassword(), "xxx");return authcInfo;}else{return null;}}}
3、controller实现用户登录package com.hxm.controller;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.subject.Subject;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.hxm.entity.Blogger;import com.hxm.service.BloggerService;import com.hxm.util.CryptographyUtil;/** * Controller层 * @author Administrator * */@Controller@RequestMapping("/blogger")public class BloggerController {@Resourceprivate BloggerService bloggerService;@RequestMapping("/login")public String login(Blogger blogger,HttpServletRequest request){Subject subject=SecurityUtils.getSubject();UsernamePasswordToken token=new UsernamePasswordToken(blogger.getUserName(), CryptographyUtil.md5(blogger.getPassword(), "123"));try{subject.login(token); // 登录验证,验证通过则跳转到主页面return "redirect:/admin/main.jsp";}catch(Exception e){e.printStackTrace();request.setAttribute("blogger", blogger);request.setAttribute("errorInfo", "用户名或者密码错误,请重新输入。");return "login";}}}
至此,一个简单的用户登录验证就实现了。
0 0
- smarty实现用户登录
- 用户登录实现机制
- java实现用户登录
- AJAX实现用户登录
- 用户登录程序实现
- php实现用户登录
- 用户登录系统实现
- 如何实现用户登录
- servlet实现用户登录
- HttpURLConnection实现用户登录
- Shiro实现用户登录
- devise实现用户登录
- thinkPHP实现用户登录
- 用户登录实现
- JSP实现用户登录
- Django实现用户登录
- cookie实现用户登录
- 实现用户自动登录
- CentOS7 yum安装Tomcat并实现多域名与虚拟目录配置
- 简单c实现无头单链表的相关操作
- oracle-优化
- 各大公司Java后端开发面试题总结
- oracle-操作语言
- 用户登录实现
- Swift 我遇见的一些坑
- QT问题系列(6)
- 微信小程序,全程开发,全部api调用,真的好简单
- oracle-dba-连接方式以及启动
- Android Studio卡在Building gradle project info的解决方法
- [JVM] 字节码指令集简介
- Error- Cannot find module 'gulp-clone'问题的解决
- 318. Maximum Product of Word Lengths