81,095
社区成员
发帖
与我相关
我的任务
分享
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;
}
<!-- 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>
<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>
PostsService postsService;加上@Resource注解
[/quote]
大神!!!!!我太爱你了 。。。我找了 一天 没找到什么毛病 。。以为加一个 注释两个可以一起用了呢!!太感谢你了!!!
PostsService postsService;加上@Resource注解
严重: 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)