CAS+Shiro实现权限管理

本次Demo直接使用 Shiro——实现权限控制demo思路(包含自定义标签hasAnyPermission)中的Shiro权限管理的Demo,可点击链接前往查看:https://blog.csdn.net/fancheng614/article/details/83718096

在使用CAS+Shiro实现认证授权时,首先得在Shiro的demo中加入jar包:cas-client-core-3.2.1.jar、shiro-cas-1.3.2.jar。

然后需要在Shiro的Demo基础上修改一些文件。

CAS+Shiro的Demo下载(其中数据库表接口点击查看表结构查看):源码下载

1、将原有的ShiroRealm.java换成MyCasRealm.java。

这两个Realm主要区别是:ShiroRealm.java继承了AuthorizingRealm类,MyCasRealm.java继承了CasRealm类。

下面是MyCasRealm.java的代码,可以将https://download.csdn.net/download/fancheng614/10763926中的Shiro的Demo下载下来与ShiroRealm.java进行对比。

package com.mfc.realm;

import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.cas.CasAuthenticationException;
import org.apache.shiro.cas.CasRealm;
import org.apache.shiro.cas.CasToken;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.SimplePrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.CollectionUtils;
import org.apache.shiro.util.StringUtils;
import org.jasig.cas.client.authentication.AttributePrincipal;
import org.jasig.cas.client.validation.Assertion;
import org.jasig.cas.client.validation.TicketValidationException;
import org.jasig.cas.client.validation.TicketValidator;
import org.springframework.beans.factory.annotation.Autowired;

import com.mfc.dao.TRolePopedomDao;
import com.mfc.dao.TUserRoleDao;
import com.mfc.dao.TuserDao;
import com.mfc.entity.TRolePopedom;
import com.mfc.entity.TUserRole;
import com.mfc.entity.Tuser;

public class MyCasRealm extends CasRealm {

	@Autowired
	private TuserDao tuserDao;

	@Autowired
	private TUserRoleDao tUserRoleDao;

	@Autowired
	private TRolePopedomDao tRolePopedomDao;

	// 授权的方法
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
		// 1.从PrincipalCollection中获取登陆用户的信息
		Object principal = principals.getPrimaryPrincipal();

		// 2.利用登陆用户的信息来获取当前用户的角色和权限(需要查询数据库)
		Set<String> roles = new HashSet<String>(); // 角色
		Set<String> popedoms = new HashSet<String>(); // 权限

		Tuser tuser = (Tuser) principal;
		TUserRole tUserRole = new TUserRole();
		tUserRole.setUserId(tuser.getUserId());
		List<TUserRole> userRoles = tUserRoleDao.find(tUserRole);
		for (TUserRole tUserRole2 : userRoles) {
			// 赋予用户角色
			roles.add(tUserRole2.getRoleId());

			// 查询角色下面
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值