shiro简单配置

Spring整合配置

1.web.xml中配置shiro的过滤器

?
1
2
3
4
5
6
7
8
9
10
11
<!--&nbsp;Shiro&nbsp;filter-->
< filter >
< filter-name >shiroFilter</ filter-name >
< filter-class >
org.springframework.web.filter.DelegatingFilterProxy
</ filter-class >
</ filter >
< filter-mapping >
< filter-name >shiroFilter</ filter-name >
< url-pattern >/*</ url-pattern >
</ filter-mapping >

2.SpringapplicationContext.xml中添加shiro配置 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< bean  id = "shiroFilter"  class = "org.apache.shiro.spring.web.ShiroFilterFactoryBean" >
< property  name = "securityManager"  ref = "securityManager"  />
< property  name = "loginUrl"  value = "/login"  />
< property  name = "successUrl"  value = "/login/loginSuccessFull"  />
< property  name = "unauthorizedUrl"  value = "/login/unauthorized"  />
< property  name = "filterChainDefinitions" >
< value >
/home* = anon
/ = anon
/logout = logout
/role/** = roles[admin]
/permission/** = perms[permssion:look]
/** = authc
</ value >
</ property >
</ bean >

securityManager:这个属性是必须的。

loginUrl:没有登录的用户请求需要登录的页面时自动跳转到登录页面,不是必须的属性,不输入地址的话会自动寻找项目web项目的根目录下的”/login.jsp页面。

successUrl:登录成功默认跳转页面,不配置则跳转至”/”。如果登陆前点击的一个需要登录的页面,则在登录自动跳转到那个需要登录的页面。不跳转到此。

unauthorizedUrl:没有权限默认跳转的页面。

anon:例子/admins/**=anon 没有参数,表示可以匿名使用。

authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,没有参数

roles:例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。

perms:例子/admins/user/**=perms[user:add:*],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。

rest:例子/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中methodpost,get,delete等。

port:例子/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议httphttps等,serverName是你访问的host,8081url配置里port的端口,queryString

是你访问的url里的?后面的参数。

authcBasic例如/admins/user/**=authcBasic没有参数表示httpBasic认证

ssl:例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为https

user:例如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查

注:anon,authcBasic,auchc,user是认证过滤器,

perms,roles,ssl,rest,port是授权过滤器

3.applicationContext.xml中添加securityManagerper配置

?
1
2
3
4
5
6
< bean  id = "securityManager"  class = "org.apache.shiro.web.mgt.DefaultWebSecurityManager" >
<!-- 单realm应用。如果有多个realm,使用‘realms’属性代替 -->
< property  name = "realm"  ref = "sampleRealm"  />
< property  name = "cacheManager"  ref = "cacheManager"  />
</ bean >
< bean  id = "cacheManager"  class = "org.apache.shiro.cache.ehcache.EhCacheManager"  />

4.配置jdbcRealm

?
1
2
3
4
5
6
7
8
9
10
11
12
< bean  id = "sampleRealm"  class = "org.apache.shiro.realm.jdbc.JdbcRealm" >
< property  name = "dataSource"  ref = "dataSource"  />
< property  name = "authenticationQuery"
value = "select t.password from my_user t where t.username = ?"  />
< property  name = "userRolesQuery"
value = "select a.rolename from my_user_role t left join my_role a on t.roleid = a.id where t.username = ? "  />
< property  name = "permissionsQuery"
value = "SELECT B.PERMISSION FROM MY_ROLE T LEFT JOIN MY_ROLE_PERMISSION A ON T.ID = A.ROLE_ID LEFT JOIN MY_PERMISSION B ON A.PERMISSION = B.ID WHERE T.ROLENAME = ? "  />
< property  name = "permissionsLookupEnabled"  value = "true"  />
< property  name = "saltStyle"  value = "NO_SALT"  />
< property  name = "credentialsMatcher"  ref = "hashedCredentialsMatcher"  />
</ bean >

dataSource数据源,配置不说了。

authenticationQuery登录认证用户的查询SQL,需要用登录用户名作为条件,查询密码字段。

userRolesQuery用户角色查询SQL,需要通过登录用户名去查询。查询角色字段

permissionsQuery用户的权限资源查询SQL,需要用单一角色查询角色下的权限资源,如果存在多个角色,则是遍历每个角色,分别查询出权限资源并添加到集合中。

permissionsLookupEnabled默认falseFalse时不会使用permissionsQuerySQL去查询权限资源。设置为true才会去执行。

saltStyle密码是否加盐,默认是NO_SALT不加盐。加盐有三种选择CRYPT,COLUMN,EXTERNAL。详细可以去看文档。这里按照不加盐处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值