NutzCN Logo
问答 关于shiro激活注解扫描的问题
发布于 2411天前 作者 qq_e8bc609b 1769 次浏览 复制 上一个帖子 下一个帖子
标签:

在spring里面用shiro做权限管理可以有粗粒度和细粒度的两种方式,用细粒度的控制方法级别的权限要开启激活注解,在nutz里面有没有这个配置呢?有的话怎么配置呢?

4 回复

不知道spring里面的 粗粒度和细粒度 是啥

@wendal 粗粒度就是url权限控制,细粒度就是方法控制。我现在写的一个demo是用的url控制。

这是shiro.ini

[main]
nutzdao_realm = net.wendal.nutzbook.shiro.realm.LoginRealm

authc = org.nutz.integration.shiro.SimpleAuthenticationFilter
authc.loginUrl  = /login.jsp
logout.redirectUrl= /login.jsp

[urls]
/rs/*        = anon
/user/logout = logout
/user/error  = anon
/user/login  = anon
/user/profile/active/mail = anon
/upload/down =authc

在mianmodule上面有注解

@SessionBy(ShiroSessionProvider.class)

这是realm

public class LoginRealm extends AuthorizingRealm{

	private Dao dao;
	
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
		System.out.println("授权管理");
		SimpleAuthorizationInfo sin=new SimpleAuthorizationInfo();
		Subject sub = SecurityUtils.getSubject();
		User user = (User) sub.getPrincipal();
		if(user.getUsername().equals("faker")) {
			sin.addRole("admin");
		}
		
		
		return sin;
	}

	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
		System.out.println("认证管理");
		UsernamePasswordToken uptoke=(UsernamePasswordToken) token;
		
		 if (dao == null) {
	        dao = Mvcs.ctx().getDefaultIoc().get(Dao.class, "dao");
		 }
		
		User user = dao.fetch(User.class,Cnd.where("username","=",uptoke.getUsername()));
		System.out.println(user);
		
		return new SimpleAuthenticationInfo(user,user.getPassword(),getName());
	}

}

下面是入口函数

@At//登录
	public Object login(@Param("..")User user) {
		Subject sub = SecurityUtils.getSubject();
		AuthenticationToken token=new UsernamePasswordToken(user.getUsername(), user.getPassword());
		try {
			sub.login(token);
			return "成功";
		} catch (AuthenticationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return "失败";
		}
		
	}

用起来没有问题,但是我想弄一下类似spring里面的那种注解控制方法权限的用法,没有找到什么资料。

在需要的入口方法上面加@RequireXxx的shiro注解就行了

@wendal 哦,在nutz里面使用不需要激活注解的配置,谢了

添加回复
请先登陆
回到顶部