打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
权限控制 Shiro采用JdbcRealm(JNDI)

1.在web.xml中添加过滤器

 

 

Xml代码  
  1. <filter>  
  2.     <filter-name>ShiroFilter</filter-name>  
  3.     <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>  
  4. </filter>  
  5. <filter-mapping>  
  6.     <filter-name>ShiroFilter</filter-name>  
  7.     <url-pattern>/*</url-pattern>  
  8. </filter-mapping>  

 

注意:此段代码的放置位置也是需要注意的,比如我就将其放置在web.xml中最前的位置。否则,shiro可能不会起到效果,甚至会造成其它未知错误。

 

2.在项目的classpath路径(和java文件同一目录下  src 下)下添加 shiro.ini文件

 

注意:此处采用oracle数据库(其它数据库配置形式相同,比较简单,倒是oracle配置略有差别)

 

 

Xml代码  
  1. [main]  
  2. ds = oracle.jdbc.pool.OracleDataSource  
  3. ds.driverType=thin  
  4. ds.networkProtocol=tcp  
  5. ds.serverName=192.168.32.13  
  6. ds.databaseName = orcl  
  7. ds.portNumber=1521  
  8. ds.user = lanwan  
  9. ds.password = ustclanwan  
  10. jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm  
  11. jdbcRealm.permissionsLookupEnabled = true  
  12. jdbcRealm.authenticationQuery = select login_pwd from sys_c_ul  where worker_code=?  
  13. jdbcRealm.userRolesQuery = select role_id from sys_j_ur  where worker_id=?  
  14. jdbcRealm.permissionsQuery=select file_id from sys_j_rrs  where role_id in(select role_id from sys_j_ur  where worker_id=?)  
  15. jdbcRealm.dataSource = $ds  
  16. [filters]  
  17. authc.loginUrl = index.jsp  
  18. [urls]  
  19. /index.jsp = anon  

 其中:

 

Xml代码  
  1. jdbcRealmjdbcRealm.authenticationQuery =  
  2. jdbcRealm.userRolesQuery =   
  3. jdbcRealm.permissionsQuery=  

 

可以根据需要自定义。

 

另附上采用JNDI数据源的用法:

 

Xml代码  
  1. [main]  
  2. ds = org.apache.shiro.jndi.JndiObjectFactory   
  3. ds.resourceName = java:jboss/datasources/IPSST  
  4. ds.requiredType = javax.sql.DataSource   
  5. jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm  
  6. jdbcRealm.permissionsLookupEnabled = true  
  7. jdbcRealm.authenticationQuery = select login_pwd from hr_j_emp_info  where emp_name=?  
  8. jdbcRealm.dataSource = $ds  
  9. [filters]  
  10. authc.loginUrl = index.jsp  
 

 

 

3、在java文件中进行登录操作(非本文重点,本文只是想记录使用jndi的用法),只是做了登录,角色、权限可产考其它文章。

 

 

Java代码  
  1. String loginAccount=request.getParameter("userCode");  
  2. String pwd=request.getParameter("pwd");  
  3. Subject subject = SecurityUtils.getSubject();  
  4.           
  5. String MD5Str=  
  6. SecurityManager.GetMD5Str32(SecurityManager.GetMD5Str32(pwd));  
  7.   
  8. UsernamePasswordToken token =  
  9.  new UsernamePasswordToken(loginAccount,MD5Str);  
  10.   
  11. try {  
  12.   subject.login(token);  
  13. token.setRememberMe(true);  
  14. } catch (UnknownAccountException uae) {  
  15.     return loginFailed();  
  16. } catch (IncorrectCredentialsException ice) {  
  17.     return loginFailed();  
  18. } catch (LockedAccountException lae) {  
  19.     return loginFailed();  
  20. } catch (AuthenticationException ae){  
  21.     return loginFailed();  
  22. }  
 

 

 

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
shiro框架学习-4- Shiro内置JdbcRealm
配置Spring数据源c3p0与dbcp
第四章 INI配置
初识Shiro
初识Fastjson漏洞(环境搭建及漏洞复现)
在项目中集成shiro权限框架(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服