文档章节

maven spring hibernate shiro

alexgaoyh
 alexgaoyh
发布于 2014/08/28 16:59
字数 422
阅读 533
收藏 4

maven spring hibernate RBAC shiro mysql

代码发布于 http://git.oschina.net/alexgaoyh/alexgaoyh


1:数据库表结构设计采用RBAC权限模型,即五张表结构设计(用户,角色,用户-角色,权限,角色-权限),本文不再详细说明;


2:shiro使用过程中:

2.1:以下这个类是进行用户的数据库验证的,从数据库里面查出是否有这个用户。

public class ShiroDbRealm extends AuthorizingRealm
需要注意的是 doGetAuthenticationInfo 方法的

return new SimpleAuthenticationInfo(user, user.getPassword(), ByteSource.Util.bytes(user.getPassword()),getName()); 部分;


2.2: 在生成对用表结构的时候,需要注意本例中的user表中password字段使用了MD5加密,

所以,在生成表结构之后,执行以下方法生成对应的用户数据:

public String saveSysmanUserEntity() throws Exception{
    	SysmanUser su = new SysmanUser();
    	su.setUserName("admin");
    	su.setRealName("admim");
    	su.setPassword(new Md5Hash("admin").toHex());
    	su.setStatus(SysmanUser.STATUS_NORMAL);
    	sysmanUserService.saveOrUpdate(su);
    	return JSONObject.valueToString(su);
    }
2.3: 同时在登陆方法中

public ModelAndView doLogin(HttpServletRequest request, HttpServletResponse response) {

		Map<String, Boolean> map = new HashMap<String, Boolean>();
		
		boolean loginStatus = false;
		boolean captchaStatus = false;
		
		String captcha = request.getParameter("captcha");
		String exitCode = (String) request.getSession().getAttribute(CaptchaConstant.KEY_CAPTCHA);
		if (null == captcha || !captcha.equalsIgnoreCase(exitCode)) {
			System.out.println("验证码错误");
		}else{
			captchaStatus = true;
			
			String username = request.getParameter("username");
			String password = request.getParameter("password");
			
			Md5Hash md5Hash = new Md5Hash(password);
			
			UsernamePasswordToken token = new UsernamePasswordToken(username,md5Hash.toHex());
			
			System.out.println(token.getUsername());
			System.out.println(token.getPassword());
			
			try {
				Subject subject = SecurityUtils.getSubject();
				subject.login(token);
				token.clear();
				SysmanUser user = (SysmanUser) subject.getPrincipal();
				subject.getSession().setAttribute("adminCurrentUser", user);
				loginStatus = true;
				
			} catch (UnknownAccountException ex) {
				ex.printStackTrace();
				
			} catch (IncorrectCredentialsException ex) {
				ex.printStackTrace();
			}
			catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		
		map.put("loginStatus", loginStatus);
		map.put("captchaStatus", captchaStatus);
		
		ModelAndView mav = new ModelAndView("views/admin/index", map);

		return mav;
	}
需要注意用户输入的password是明文,在生成token的时候,需要进行如下操作:

Md5Hash md5Hash = new Md5Hash(password);
			
UsernamePasswordToken token = new UsernamePasswordToken(username,md5Hash.toHex());




© 著作权归作者所有

共有 人打赏支持
alexgaoyh

alexgaoyh

粉丝 76
博文 82
码字总数 65212
作品 1
郑州
后端工程师
私信 提问
0.osframe框架启动入门说明

开源项目名称: osframe管理系统 托管地址: http://git.oschina.net/haizicq/osframe 主要技术: spring mvc、spring、hibernate、angular js、seajs、bootstrap、shiro 框架介绍: 本框架是...

王春-海子
2016/06/29
212
0
springside4运行quick-start.bat报错,请指点

[ERROR] Failed to execute goal on project springside-core: Could not resolve dependencies for project org.springside:springside-core:jar:4.0.0.RC1: Failed to collect dependencie......

javacc
2012/03/13
2.6K
7
Maven搭建SpringMVC+Hibernate项目详解 【转】

。搭建SpringMVC+Hibernate的框架的思路如下: 1、设计数据库:设计好表结构,最好符合3NF,采用Hibernate tools将设计好的表自动生成对应的实体entity。 1、创建Maven项目,按需映入Maven包...

如何让他和
2016/09/30
75
3
Maven搭建SpringMVC+Hibernate项目详解 【转】

今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hiber...

梵蒂冈考虑过
2016/10/19
37
1
Spring Shiro 学习系统--Spring-Shiro-training

Spring Shiro 学习系统 简介 基于 springmvc、spring、mybatis-plus、shiro、easyui、Log4j2 简单实用的权限系统。 界面基于 EasyUI,图标采用较为开放的“Foundation Icon”(MIT 协议)。 ...

轩少_
2017/01/09
24.4K
19

没有更多内容

加载失败,请刷新页面

加载更多

mybatis缓存的装饰器模式

一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会导致大量子类的出现...

算法之名
昨天
11
0
单元测试

右键方法 Go To --> Test,简便快速生成测试方法。 相关注解 @RunWith(SpringRunner.class) 表示要在测试环境中跑,底层实现是 jUnit测试工具。 @SpringBootTest 表示启动整个 Spring工程 @A...

imbiao
昨天
2
0
欧拉公式

欧拉公式表达式 欧拉公式的几何意 cosθ + j sinθ 是个复数,实数部分也就是实部为 cosθ ,虚数部分也就是虚部为 j sinθ ,对应复平面单位圆上的一个点。 根据欧拉公式和这个点可以用 复指...

sharelocked
昨天
4
0
burpsuite无法抓取https数据包

1.将浏览器和burpsuite的代理都设置好 2.在浏览器地址栏输入: http://burp 3.下载下面的证书,并将证书导入浏览器 cacert.der

Frost729
昨天
2
0
JeeSite4.x 消息管理、消息推送、消息提醒

实现统一的消息推送接口,包含PC消息、短信消息、邮件消息、微信消息等,无需让所有开发者了解消息是怎么发送出去的,只需了解消息发送接口即可。 所有推送消息均通过 MsgPushUtils 工具类发...

ThinkGem
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部