shiro框架报错空指针,求大神帮忙

wz334809916 2017-07-22 03:25:56
下面代码是shiro中的权限验证部分代码,List<Posts> posts打印不出来,从这里开始报错。
没加入权限验证的时候 用户登录验证是可以用的,在外面使用相同的语句 posts是可以打印出来的。求大神指点。
public class UserRealm extends AuthorizingRealm {

@Resource
UserinfoService userinfoService;
PostsService postsService;

// 访问权限
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection token) {
String userName = (String) token.getPrimaryPrincipal(); //获取用户名usersbm
System.out.println(userName);
Set<String> roles =new HashSet<String>();//创建身份
System.out.println(roles);
List<Posts> posts = postsService.QueryPosts(); //查询所有权限信息保存到posts
System.out.println(posts);
Userinfo userinfo = userinfoService.QueryUserByUsersbm(userName);
int userposts=userinfo.getUserclass();//获取用户等级
int one= posts.get(0).getPostclass();//设置权限one等于数据库内第一个权限用户的postclass
int two=posts.get(1).getPostclass();
int three=posts.get(2).getPostclass();
int four=posts.get(3).getPostclass();
int five=posts.get(4).getPostclass();

//为roles 添加对应 postsclass的中文身份。
if (userposts==one) {
roles.add(posts.get(0).getPosts());
}
if (userposts==two) {
roles.add(posts.get(1).getPosts());
}
if (userposts==three) {
roles.add(posts.get(2).getPosts());
}
if (userposts==four) {
roles.add(posts.get(3).getPosts());
}
if (userposts==five) {
roles.add(posts.get(4).getPosts());
}

Set<String> permissions = new HashSet<String>();
// //所有用户可以访问的地址:
permissions.add("/login");
permissions.add("/dologin");
permissions.add("/QueryStationByLines");
permissions.add("/QueryCodexByStation");
permissions.add("/QueryUserByStation");
permissions.add("/index");
// //权限用户可以访问的地址:
if(userposts == one){
permissions.add("/upuserpwd");

}
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
authorizationInfo.addRoles(roles);//设置角色
authorizationInfo.addStringPermissions(permissions);//设置权限
return authorizationInfo;
// return null;

}


web.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>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>classpath:applicationContext.xml </param-value>
</context-param>

applicationContext.xml中的配置:
	<bean id="userRealms" class="com.wz.shiro.UserRealm" />

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealms" />
</bean>

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="/login" />
<property name="successUrl" value="/index" />
<property name="unauthorizedUrl" value="/perms" />
<!-- 配置权限管理,bean权限管理的拦截器 -->
<property name="filters">
<map>
<entry key="perms">
<bean class="com.wz.shiro.PermFitler"></bean>
</entry>
</map>
</property>
<property name="filterChainDefinitions">
<value>
/login = anon
/dologin = anon
/QueryStationByLines = anon
/QueryCodexByStation = anon
/QueryUserByStation = anon
/static/** = anon
/** = authc
/** = perms
</value>
</property>
</bean>

...全文
240 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wz334809916 2017-07-22
  • 打赏
  • 举报
回复
引用 4 楼 pany1209 的回复:
[quote=引用 3 楼 wz334809916 的回复:] [quote=引用 2 楼 pany1209 的回复:] at com.wz.shiro.UserRealm.doGetAuthorizationInfo(UserRealm.java:35) 35行是哪一行???
List<Posts> posts = postsService.QueryPosts(); 就是代码里的取 权限集合的这一行,在外面我打印是可以打出来的[/quote]

PostsService postsService;加上@Resource注解
[/quote] 大神!!!!!我太爱你了 。。。我找了 一天 没找到什么毛病 。。以为加一个 注释两个可以一起用了呢!!太感谢你了!!!
李德胜1995 2017-07-22
  • 打赏
  • 举报
回复
引用 3 楼 wz334809916 的回复:
[quote=引用 2 楼 pany1209 的回复:] at com.wz.shiro.UserRealm.doGetAuthorizationInfo(UserRealm.java:35) 35行是哪一行???
List<Posts> posts = postsService.QueryPosts(); 就是代码里的取 权限集合的这一行,在外面我打印是可以打出来的[/quote]

PostsService postsService;加上@Resource注解
wz334809916 2017-07-22
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
at com.wz.shiro.UserRealm.doGetAuthorizationInfo(UserRealm.java:35) 35行是哪一行???
List<Posts> posts = postsService.QueryPosts(); 就是代码里的取 权限集合的这一行,在外面我打印是可以打出来的
李德胜1995 2017-07-22
  • 打赏
  • 举报
回复
at com.wz.shiro.UserRealm.doGetAuthorizationInfo(UserRealm.java:35) 35行是哪一行???
wz334809916 2017-07-22
  • 打赏
  • 举报
回复
报错代码:
严重: Servlet.service() for servlet [Myweb] in context with path [/Jcdata] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
	at com.wz.shiro.UserRealm.doGetAuthorizationInfo(UserRealm.java:35)
	at org.apache.shiro.realm.AuthorizingRealm.getAuthorizationInfo(AuthorizingRealm.java:341)
	at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:461)
	at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:457)
	at org.apache.shiro.authz.ModularRealmAuthorizer.isPermitted(ModularRealmAuthorizer.java:223)
	at org.apache.shiro.mgt.AuthorizingSecurityManager.isPermitted(AuthorizingSecurityManager.java:113)
	at org.apache.shiro.subject.support.DelegatingSubject.isPermitted(DelegatingSubject.java:159)
	at com.wz.shiro.PermFitler.isAccessAllowed(PermFitler.java:17)
	at org.apache.shiro.web.filter.AccessControlFilter.onPreHandle(AccessControlFilter.java:162)
	at org.apache.shiro.web.filter.PathMatchingFilter.isFilterChainContinued(PathMatchingFilter.java:203)
	at org.apache.shiro.web.filter.PathMatchingFilter.preHandle(PathMatchingFilter.java:178)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:131)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:798)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1434)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:748)

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧