struts2连接oracle,java – 如何配置shiro Realm以连接到struts2应用程序中的oracle数据库...

我已经和shiro(ki,jsecurity)合作了几天,并且已经能够创建一个测试应用程序.我正在使用struts2,关闭JBoss.我已经能够创建一个shiro.ini文件与一些硬编码用户,我已经得到了这个工作.似乎JAVA中的API非常容易掌握,因此将shiro集成到我的应用程序并使其功能化并不是真正的问题.我真正的问题是,我无法找到任何形式的文档,介绍如何使用此设置创建/绑定REALM到Oracle数据库.我找到了几个例子,并且漫无目的地尝试使其适应我的情况.但我一直无法.

我有一个带有USERS表的oracle数据库,它只包含用户名,密码和角色.如果我能够建立连接,它似乎应该恰好适合我当前的登录/注销应用程序.

我在web.xml中添加了以下行

ShiroFilter

org.apache.shiro.web.servlet.ShiroFilter

ShiroFilter

/*

REQUEST

FORWARD

INCLUDE

ERROR

org.apache.shiro.web.env.EnvironmentLoaderListener

然后我将shiro.ini添加到我的WEB-INF:

[main]

[users]

bruins = boston,admin,super,worker

rangers = newyork,worker

leafs = toronto,worker

[urls]

/authoring/logout = logout

/authoring/** = authc

之后,它只是从我的loginAction.java中调用java代码:

Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");

SecurityManager securityManager = factory.getInstance();

SecurityUtils.setSecurityManager(securityManager);

Subject currentUser = SecurityUtils.getSubject();

UsernamePasswordToken token = new UsernamePasswordToken(this.username,this.password);

try {

currentUser.login(token);

Session session = currentUser.getSession();

session.setAttribute("user",this.username);

} catch (UnknownAccountException uae) {

...

} catch (IncorrectCredentialsException iae) {

...

} catch (LockedAccountException lae) {

...

} catch (AuthenticationException ae) {

...

} catch (Exception e) {

...

}

ActionMessages messages = new ActionMessages();

if (currentUser.isAuthenticated()) {

System.out.println("user is authenticated!!!!!");

if (currentUser.hasRole("admin")){

System.out.println(this.username + " can access admin functions");

}

if(currentUser.hasRole("super")){

System.out.println(this.username + " can access supervisor functions");

}

if(currentUser.hasRole("worker")){

System.out.println(this.username + " can only perform worker functions");

}

addActionMessage(getText("success.valid.user",this.username));

return SUCCESS;

} else {

System.out.println("user was not authenticated!!!!!!");

addActionError(getText("error.login"));

return ERROR;

}

总而言之,我让应用程序与硬编码用户一起工作:我的问题是,设置REALM连接到我的oracle数据库的最佳方法是什么?我已经通过几种不同的方式在网上看到了它,并且我无法将它们中的任何一种用于我的设置,我希望能够实现这一点,我可以继续熟悉API.

谢谢 – 约翰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值