发表于: 2017-08-04 23:51:13
2 919
遇到的问题:
1、完全相同的代码,server在我电脑上启动时居然报了错,被吓了一跳。
这个错误出现了两次,第一次在重启idea后正常。之后的一次在重启电脑后server启动正常。
收获:
1、前端告诉说有一个我写的接口在翻页时会报错,我看了控制台是空指针异常,查了下原因是因为有个地方忘记作判空。
改好后未及时提交,等需要提交时发现在225连不上开发机二了,造成service端无法开启、无法提交至 svn 。没办法只能开启屏幕分享,把代码复制给李昂,在他那里修复了这个bug,我记得他之后提交了。
晚上我移到了217,连上了svn,又改动了一处代码,之后提交,提交前却忘了更新svn。(下午改好的那个bug 于是就这样被我覆盖了)
第二天前端告诉我那个接口又报错了,我急忙翻找到那段代码,发现依然是没判空。
2、现在萝卜多中的:
需要权限管理的是后台系统,
后台系统分目前分为3个模块:可以把他们理解为3个权限
用户管理、权限管理、模块管理。
而他们都包含了“增删改查”这4个“下一级”的权限,但由于项目中只要求对模块访问进行权限验证,不要求对增删改查权限的要求。
现在登录和权限验证以及被shiro框架接管了。
与spring集成以及相关的配置有这么几步。
在pom引入shiro-spring依赖、
在web.xml配置shiroFilter(DelegatingFilterProxy会自动到Spring容器中查找名字为shiroFilter的bean并把filter请求交给它处理。)
下面就是shiroFilter,把所有
Bean(name = "shiroFilter")
@DependsOn("securityManager")
public ShiroFilterFactoryBean getShiroFilterFactoryBean(DefaultSecurityManager securityManager, Realm realm) {
securityManager.setRealm(realm);
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
shiroFilter.setSecurityManager(securityManager);
shiroFilter.setLoginUrl("/a/login");
shiroFilter.setSuccessUrl("/a/u/welcome");
filterChainDefinitionMap.put("/a/u/company/**", "anon");
filterChainDefinitionMap.put("/a/u/job/**", "anon");
filterChainDefinitionMap.put("/a/u/article/**", "anon");
filterChainDefinitionMap.put("/a/u/img/**", "anon");
filterChainDefinitionMap.put("/a/u/user/**", "perms[system:user]");
filterChainDefinitionMap.put("/a/u/role/**", "perms[system:role]");
filterChainDefinitionMap.put("/a/u/module/**", "perms[system:module]");
shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilter;
之后的一个重要部分是realm,在这里
@Componentpublic class MyRealm extends AuthorizingRealm {
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
// 从principals中能取出当前登录用户、把该用户的权限都加到一个集合中,把集合设置到返回的info类中。
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
// 自己写账号密码验证逻辑,账号或密码不对时 都抛出同一个异常就可以
// 如果验证无误,则返回一个info类,把用户类设置进去。
}
}
这样设置好之后,每当访问一个路径,都会进入 doGetAuthorizationInfo 方法,搜集该用户的所有权限。 如果有访问权限则将
评论