1.在web.xml中添加过滤器
<filter>
<filter-name>ShiroFilter</filter-name>
<filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ShiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:此段代码的放置位置也是需要注意的,比如我就将其放置在web.xml中最前的位置。否则,shiro可能不会起到效果,甚至会造成其它未知错误。
2.在项目的classpath路径(和java文件同一目录下 src 下)下添加 shiro.ini文件
注意:此处采用oracle数据库(其它数据库配置形式相同,比较简单,倒是oracle配置略有差别)
[main]
ds = oracle.jdbc.pool.OracleDataSource
ds.driverType=thin
ds.networkProtocol=tcp
ds.serverName=192.168.32.13
ds.databaseName = orcl
ds.portNumber=1521
ds.user = lanwan
ds.password = ustclanwan
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = select login_pwd from sys_c_ul where worker_code=?
jdbcRealm.userRolesQuery = select role_id from sys_j_ur where worker_id=?
jdbcRealm.permissionsQuery=select file_id from sys_j_rrs where role_id in(select role_id from sys_j_ur where worker_id=?)
jdbcRealm.dataSource = $ds
[filters]
authc.loginUrl = index.jsp
[urls]
/index.jsp = anon
其中:
jdbcRealm.authenticationQuery =
jdbcRealm.userRolesQuery =
jdbcRealm.permissionsQuery=
可以根据需要自定义。
另附上采用JNDI数据源的用法:
[main]
ds = org.apache.shiro.jndi.JndiObjectFactory
ds.resourceName = java:jboss/datasources/IPSST
ds.requiredType = javax.sql.DataSource
jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.permissionsLookupEnabled = true
jdbcRealm.authenticationQuery = select login_pwd from hr_j_emp_info where emp_name=?
jdbcRealm.dataSource = $ds
[filters]
authc.loginUrl = index.jsp
3、在java文件中进行登录操作(非本文重点,本文只是想记录使用jndi的用法),只是做了登录,角色、权限可产考其它文章。
String loginAccount=request.getParameter("userCode");
String pwd=request.getParameter("pwd");
Subject subject = SecurityUtils.getSubject();
String MD5Str=
SecurityManager.GetMD5Str32(SecurityManager.GetMD5Str32(pwd));
UsernamePasswordToken token =
new UsernamePasswordToken(loginAccount,MD5Str);
try {
subject.login(token);
token.setRememberMe(true);
} catch (UnknownAccountException uae) {
return loginFailed();
} catch (IncorrectCredentialsException ice) {
return loginFailed();
} catch (LockedAccountException lae) {
return loginFailed();
} catch (AuthenticationException ae){
return loginFailed();
}
分享到:
相关推荐
shiro demo 源码里面2中realm 一种是jdbcRealm 一种是自定义realm 有sql脚本。请看db文件夹下的readme.txt 有关这个项目的详细介绍,使用了简单的标签库权限控制当做例子
使用Shiro的JdbcRealm实现查询数据库进行身份认证示例源码
本测试小例子是用eclipse编写的使用shiro内置的jdbcRealm的测试数据库,免费提供,然后直接解压缩,使用eclipse直接open或者import打开,然后编译运行就可以了
shiro动态URL权限控制 用过Spring Security的朋友应该比较熟悉对URL进行全局的权限控制,即访问URL时进行权限匹配;如果没有权限直接跳到相应的错误页面。Shiro也支持类似的机制,不过需要稍微改造下来满足实际需求...
shiro freemarker整合 使用权限控制
vue+shiro实现前端细颗粒按钮级权限,并且可以实现删除和禁用两种不同模式,里面需要的前置技术包括 :vue\vue的自定义指令\vue的自定义插件\vuex
NULL 博文链接:https://vti-iteye.iteye.com/blog/1963397
spring+shiro 增删改查权限控制,其中包括用户管理、角色管理、权限管理
SpringBoot 、Shiro、 自定义注解权限控制
Java语言的框架整合及权限的控制(粗粒度、细粒度) SSM(spring+springmvc+mybatis)的整合 SSM+shiro基于资源的权限控制整合demo 配置文件原理的注释 shiro的认证、授权、及从数据库mysql获取的认证信息方法都有...
权限管理Shiro系统-Apache开源顶级项目shiro-SpringMVC_Shiro项目
SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 SpringBoot整合Shiro示例实现动态权限加载更新+Session共享+单点登录 ...
但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们... // 进行Shiro的登录UserRealm this.executeLogin(request, response); } catch (Exception e) { // 认证出现异常,传递错误信息msg
shiro权限demo
Spring整合Shiro做权限控制模块详细案例分析
权限控制之shiro与springmvc结合 绝对干货
Shiro根据用户权限显示不同的菜单.Shiro根据权限显示指定菜单
vue+element+springboot+shiro权限控制,mysql数据库 登录帐号/密码 admin:111111
springboot+shiro+layuimini实现后台管理系统的权限控制