SSM с Shiro, фильтр неэффективен, просто отображается только при входе в систему, затем вы можете увидеть страницу, почему это происходит?
После запуска проекта, он отображается только после успешного входа в систему, затем вы можете увидеть страницу, когда я отлаживаю, обнаружил, что SecurityFilter не оправдан, метод UserRealm doGetAuthorizationInfo () не является оправданным. в чем проблема? Благодарен!,
Может кто-нибудь помочь мне разобраться, почему это произошло?
Это мой класс:
public class UserRealm extends AuthorizingRealm {
@Resource
private UserService userService;
/**
* @param principalCollection
* @return
*/
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
String username=principalCollection.getPrimaryPrincipal().toString();
SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
Set<String> roleName=userService.findRoles(username);
Set<String> permissions=userService.findPermissions(username);
info.setRoles(roleName);
info.setStringPermissions(permissions);
return info;
}
/**
* @param token
* @return
* @throws AuthenticationException
*/
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
String username=token.getPrincipal().toString();
User user=userService.findUserByUsername(username);
if(user!=null){
AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo(user.getUsername(),user.getPassword(),user.getUsername()) ;
return authenticationInfo;
}else {
return null;
}
}
}
фильтр:
открытый класс SecurityFilter расширяет AccessControlFilter {
@Override
protected boolean isAccessAllowed(ServletRequest request,
ServletResponse response, Object mappedValue) throws Exception {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String url = httpServletRequest.getRequestURI();
if (null != token || isLoginRequest(request, response)) {
return false;
}
return true;
}
@Override
protected boolean onAccessDenied(ServletRequest request,
ServletResponse response) throws Exception {
saveRequestAndRedirectToLogin(request, response);
return false ;
}
}
область:
открытый класс UserRealm расширяет AuthorizingRealm {
@Ресурс
приватный UserService userService;
/ ** *
@param PrincipalCollection
- @вернуть */
@Override
protected AuthorizationInfo doGetAuthorizationInfo (PrincipalCollection PrincipalCollection) {
Строка username= PrincipalCollection.getPrimaryPrincipal(). ToString();
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo ();
Установите roleName=userService.findRoles(имя пользователя);
Установить права доступа =userService.findPermissions(имя пользователя);
info.setRoles (RoleName);
info.setStringPermissions (разрешения);
возвращаемая информация;
}
/ ** *
@парам токен
- @вернуть
@throws AuthenticationException
* /
@Override
Защищенный AuthenticationInfo doGetAuthenticationInfo(токен AuthenticationToken) создает исключение AuthenticationException {
Строка username=token.getPrincipal(). ToString();
Пользователь user=userService.findUserByUsername(имя пользователя);
если (пользователь!= NULL) {
AuthenticationInfo authenticationInfo = new SimpleAuthenticationInfo (user.getUsername(), user.getPassword (), user.getUsername());
вернуть аутентификацию Info; } еще {
вернуть ноль;
}
}
}