package com.shiro.security;
import java.util.ArrayList;
import java.util.List;
import org.apache.shiro.authc.AccountException;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.cache.Cache;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.SimplePrincipalCollection;
import org.apache.shiro.util.ByteSource;
import org.springframework.beans.factory.annotation.Autowired;
import com.shiro.mapper.RoleMapper;
import com.shiro.mapper.UserMapper;
import com.shiro.model.Resc;
import com.shiro.model.Role;
public class MonitorRealm extends AuthorizingRealm {
@Autowired
private UserMapper userMapper;
@Autowired
private RoleMapper roleMapper;
public MonitorRealm() {
super();
setAuthenticationTokenClass(UsernamePasswordToken.class);
System.out.println("monitorRealm");
}
/**
* 验证
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException {
System.out.println("monitorRealm-验证");
/* 这里编写认证代码 */
UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
String username = token.getUsername();
if (username == null) {
throw new AccountException("Null usernames are not allowed by this realm.");
}
String password = userMapper.getPassword(username).getPassword();
if (password == null) {
throw new UnknownAccountException("No account found for user [" + username + "]");
}
SimpleAuthenticationInfo saInfo = new SimpleAuthenticationInfo(username, password, getName());
//用用户名填盐
saInfo.setCredentialsSalt(ByteSource.Util.bytes(username));
return saInfo;
}
/**
* 授权
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
System.out.println("monitorRealm-授权");
String username = (String) principals.fromRealm( getName() ).iterator().next();
// System.out.println(username);
if( username != null ){
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
info.addRole(username);
info.addStringPermissions( this.Topermissions( userMapper.selectUserRole(username).getRoles()) );
// for(String str : this.Topermissions( userMapper.selectUserRole(username).getRoles()) ){
// System.out.println(str );
// }
return info;
}
return null;
}
/**
* 遍历角色得到资源
*/
public List<String> Topermissions(List<Role> roles ){
List<String> permissions= new ArrayList<String>();
for( Role role : roles ){
permissions.addAll( this.ToResc( roleMapper.selectRoleResc(role.getRoleId()).getRescs() ) );
}
return permissions;
}
/**
* 遍历某个角色的资源
*/
public List<String > ToResc( List<Resc> rescs ){
List<String > resStrings = new ArrayList<String>();
for ( Resc resc :rescs ){
resStrings.add(resc.getResString());
}
return resStrings;
}
/**
* 更新用户授权信息缓存.
*/
public void clearCachedAuthorizationInfo(String principal) {
SimplePrincipalCollection principals = new SimplePrincipalCollection(principal, getName());
clearCachedAuthorizationInfo(principals);
}
/**
* 清除所有用户授权信息缓存.
*/
public void clearAllCachedAuthorizationInfo() {
Cache<Object, AuthorizationInfo> cache = getAuthorizationCache();
if (cache != null) {
for (Object key : cache.keys()) {
cache.remove(key);
}
}
}
public UserMapper getUserMapper() {
return userMapper;
}
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
public RoleMapper getRoleMapper() {
return roleMapper;
}
public void setRoleMapper(RoleMapper roleMapper) {
this.roleMapper = roleMapper;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Shrio绝对个人完整例子
共295个文件
svn-base:127个
jar:79个
xml:22个
3星 · 超过75%的资源 需积分: 5 24 下载量 151 浏览量
2013-08-16
14:25:51
上传
评论
收藏 41.27MB RAR 举报
温馨提示
Shrio绝对个人完整例子,数据库是基于 用户 -权限 - 资源。ORM是mybatis
资源推荐
资源详情
资源评论
收起资源包目录
Shrio绝对个人完整例子 (295个子文件)
MonitorRealm.class 6KB
UserController.class 4KB
TestUser.class 3KB
TestRole.class 2KB
UserServiceImpl.class 2KB
User.class 2KB
EcacheListener.class 2KB
TestResc.class 1KB
Role.class 1KB
Resc.class 1KB
LinkUserRole.class 823B
LinkRoleResc.class 820B
TestBaseBean.class 783B
UserMapper.class 700B
RoleMapper.class 603B
UserService.class 485B
RescMapper.class 359B
SupperMapper.class 120B
.classpath 842B
org.eclipse.wst.common.component 482B
org.eclipse.wst.jsdt.ui.superType.container 49B
wc.db 140KB
Thumbs.db 19KB
entries 3B
format 3B
top_bg.gif 519B
blank.gif 43B
xwork-core-2.1.6.jar 1.49MB
aspectjweaver.jar 1.47MB
druid-0.2.9.jar 1.4MB
ehcache-core-2.6.5.jar 1.28MB
spring-core-3.2.3.RELEASE.jar 847KB
spring-context-3.2.3.RELEASE.jar 843KB
mysql-connector-java-5.1.21-bin.jar 809KB
jackson-mapper-asl-1.9.12.jar 762KB
javassist-3.17.1-GA.jar 695KB
mybatis-3.2.2.jar 683KB
spring-webmvc-3.2.3.RELEASE.jar 622KB
spring-web-3.2.3.RELEASE.jar 611KB
c3p0-0.9.1.jar 594KB
spring-beans-3.2.3.RELEASE.jar 593KB
commons-collections-3.1.jar 546KB
shiro-all-1.2.2.jar 523KB
log4j-1.2.17.jar 478KB
spring-test-3.2.3.RELEASE.jar 445KB
antlr-2.7.6.jar 433KB
kaptcha-2.3.2-jdk14.jar 426KB
xom-1.1.jar 421KB
spring-jdbc-3.2.3.RELEASE.jar 396KB
standard.jar 384KB
spring-orm-3.2.3.RELEASE.jar 378KB
spring-security-core-3.1.4.RELEASE.jar 332KB
spring-aop-3.2.3.RELEASE.jar 328KB
cglib-nodep-2.2.3.jar 315KB
commons-lang3-3.1.jar 308KB
dom4j-1.6.1.jar 307KB
cglib-2.2.2.jar 280KB
commons-lang-2.4.jar 256KB
spring-security-web-3.1.4.RELEASE.jar 248KB
junit-4.11.jar 239KB
spring-tx-3.2.3.RELEASE.jar 237KB
ognl-2.7.3.jar 234KB
jackson-core-asl-1.9.12.jar 227KB
commons-beanutils-1.8.0.jar 226KB
commons-beanutils-core-1.8.0.jar 201KB
spring-jms-3.2.3.RELEASE.jar 201KB
spring-security-config-3.1.4.RELEASE.jar 199KB
spring-expression-3.2.3.RELEASE.jar 191KB
spring-webmvc-portlet-3.2.3.RELEASE.jar 184KB
json-lib-2.4-jdk15.jar 155KB
spring-websocket-4.0.0.M1.jar 148KB
spring-context-support-3.2.3.RELEASE.jar 125KB
commons-dbcp.jar 119KB
commons-io-1.4.jar 106KB
spring-security-ldap-3.1.4.RELEASE.jar 91KB
ezmorph-1.0.6.jar 84KB
spring-security-acl-3.1.4.RELEASE.jar 78KB
spring-build-src-3.2.3.RELEASE.jar 71KB
commons-pool.jar 61KB
commons-logging-1.1.1.jar 59KB
commons-fileupload-1.2.1.jar 56KB
portlet-2.0.jar 53KB
hamcrest-library-1.3.jar 52KB
spring-aspects-3.2.3.RELEASE.jar 50KB
ejb3-persistence.jar 49KB
mybatis-spring-1.2.0.jar 48KB
hamcrest-core-1.3.jar 44KB
asm-3.3.1.jar 43KB
spring-security-crypto-3.1.4.RELEASE.jar 40KB
spring-security-samples-contacts-3.1.4.RELEASE.jar 33KB
slf4j-api-1.7.5.jar 25KB
spring-security-cas-3.1.4.RELEASE.jar 24KB
spring-security-taglibs-3.1.4.RELEASE.jar 20KB
jstl.jar 20KB
spring-security-openid-3.1.4.RELEASE.jar 19KB
json_simple-1.1.jar 16KB
shiro-cas-1.2.2.jar 16KB
spring-security-remoting-3.1.4.RELEASE.jar 11KB
jta-1.1.jar 11KB
spring-instrument-tomcat-3.2.3.RELEASE.jar 10KB
共 295 条
- 1
- 2
- 3
资源评论
- shasha_wo2014-03-11好东西,已经收藏~~
- sscc0012014-07-11一没数据库脚本,二是跑不起来
- rznice2015-05-18奇怪。这个资源我怎么下载不下来呢?
LeeJohn_
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功