打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
基于Spring框架的Shiro配置
roydocs
>《Spring》
2013.09.11
关注
一、在web.xml中添加shiro过滤器
Xml代码
<!-- Shiro 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
>
二、在Spring的applicationContext.xml中添加shiro配置
1、添加shiroFilter定义
Xml代码
<!-- Shiro Filter -->
<
bean
id
=
"shiroFilter"
class
=
"org.apache.shiro.spring.web.ShiroFilterFactoryBean"
>
<
property
name
=
"securityManager"
ref
=
"securityManager"
/>
<
property
name
=
"loginUrl"
value
=
"/login"
/>
<
property
name
=
"successUrl"
value
=
"/user/list"
/>
<
property
name
=
"unauthorizedUrl"
value
=
"/login"
/>
<
property
name
=
"filterChainDefinitions"
>
<
value
>
/
login
=
anon
/user/** = authc
/role/edit/* = perms[role:edit]
/role/
save
=
perms
[role:edit]
/role/
list
=
perms
[role:view]
/** = authc
</
value
>
</
property
>
</
bean
>
2、添加securityManager定义
Xml代码
<
bean
id
=
"securityManager"
class
=
"org.apache.shiro.web.mgt.DefaultWebSecurityManager"
>
<
property
name
=
"realm"
ref
=
"myRealm"
/>
</
bean
>
3、添加realm定义
Xml代码
<
bean
id
=
" myRealm"
class
=
"com...MyRealm"
/>
三、实现MyRealm:继承AuthorizingRealm,并重写认证授权方法
Java代码
public
class
MyRealm
extends
AuthorizingRealm{
private
AccountManager accountManager;
public
void
setAccountManager(AccountManager accountManager) {
this
.accountManager = accountManager;
}
/**
* 授权信息
*/
protected
AuthorizationInfo doGetAuthorizationInfo(
PrincipalCollection principals) {
String username=(String)principals.fromRealm(getName()).iterator().next();
if
( username !=
null
){
User user = accountManager.get( username );
if
( user !=
null
&& user.getRoles() !=
null
){
SimpleAuthorizationInfo info =
new
SimpleAuthorizationInfo();
for
( SecurityRole each: user.getRoles() ){
info.addRole(each.getName());
info.addStringPermissions(each.getPermissionsAsString());
}
return
info;
}
}
return
null
;
}
/**
* 认证信息
*/
protected
AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken authcToken )
throws
AuthenticationException {
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
String userName = token.getUsername();
if
( userName !=
null
&& !
""
.equals(userName) ){
User user = accountManager.login(token.getUsername(),
String.valueOf(token.getPassword()));
if
( user !=
null
)
return
new
SimpleAuthenticationInfo(
user.getLoginName(),user.getPassword(), getName());
}
return
null
;
}
}
参考资料:
让Apache Shiro保护你的应用
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
应用Shiro到Web?Application(基础)
第四章:Shiro的身份认证(Authentication)
Spring Boot 整合 Shiro ,两种方式全总结!
初识Shiro
源码分析shiro认证授权流程
Shiro系列之Shiro+Mysql实现用户认证(Authentication)
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×