发表于: 2018-04-08 23:51:07
1 611
今天完成的事情:
1.还在学习shiro的内容,看了半天的教程,最后只简单的跑了一下流程,还没有实现基本功能。
[users]
# admin=admin 分别表示账号和密码,administrator 表示逗号前边的账号拥有 administrator 这个角色。
admin=admin,administrator
zhangsan=zhangsan,manager
lisi=lisi,guest
[roles]
# administrator 表示角色名称,* 表示这个角色拥有所有权限
administrator=*
manager=user:*
guest=user:query
public static void main( String[] args )
{
// 读取 shiro.ini 文件内容
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
session.setAttribute("someKey", "aValue");
String value = (String) session.getAttribute("someKey");
if (value.equals("aValue")) {
System.out.println("someKey 的值:" + value);
}
// 登陆
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "zhangsan");
token.setRememberMe(true);
try {
currentUser.login(token);
} catch (UnknownAccountException uae) {
System.out.println("用户名不存在:" + token.getPrincipal());
} catch (IncorrectCredentialsException ice) {
System.out.println("账户密码 " + token.getPrincipal() + " 不正确!");
} catch (LockedAccountException lae) {
System.out.println("用户名 " + token.getPrincipal() + " 被锁定 !");
}
// 认证成功后
if (currentUser.isAuthenticated()) {
System.out.println("用户 " + currentUser.getPrincipal() + " 登陆成功!");
//测试角色
System.out.println("是否拥有 manager 角色:" + currentUser.hasRole("manager"));
//测试权限
System.out.println("是否拥有 user:create 权限" + currentUser.isPermitted("user:create"));
//退出
currentUser.logout();
}
}
2.后台模块管理系统的设计。
超级管理员 :( article,video,model)CRUD ,user,CRUD
普通管理员:( article,video)CRU, user ,R
3.了解了一下web.xml中的加载顺序,并学习一下之前不太了解的相关内容。
context- param -> listener -> filter -> servlet
1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。
2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。
3.listener:监听器,从字面上可以看出listener主要用来监听只用。通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。
通俗的语言说就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。
4.interceptor:是在面向切面编程的,就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法。
遇到的问题:
1.集成web还没搞清楚,.进度缓慢。
收获:
1.看了一遍shiro的官方文档,大概流程基本清晰了。
2.主要的API也了解了。
Authentication和Authorization还有Permissions
明天的计划:
1.把shiro整合web的demo搞起来。
进度:
复盘项目:求学大作战。
开始时间:2018.3.20日
计划demo时间:5.1号
延期风险:无
禅道地址:http://task.ptteng.com/zentao/project-task.html
评论