第六章:继承web,路径匹配、Shiro标签的使用,会话机制

在第五章基础上添加功能,工程结构:

    

一、路径匹配

?  匹配单个字符,正确路径/admin, 那么/admin?=authc可以匹配admin + 单个字符,admin12就不能匹配

*  能匹配任意字符,admin,admin1, admin12, 都可以匹配,多层路径不能匹配,比如admin12/12

**  匹配多层路径,admin/**  能匹配admin/1222/12112...., 但是admin12/1545不能匹配

二、shiro标签

【角色标签】

在success.jsp页面添加:注意,页面的shiro标签的name要和shiro.ini的角色名称一致,否则没有效果

<h1>欢迎您!</h1>
	<shiro:hasRole name="admin">
		欢迎有admin角色用户!
	</shiro:hasRole>

用java1234/123456登录,该用户有admin角色,结果:

  

用jack=123登录,该用户没有admin角色,结果:

  

-------------------------------

【权限标签】

<h1>欢迎您!</h1>
	<shiro:hasRole name="admin">
		欢迎有admin角色的用户!
	</shiro:hasRole>
	<shiro:hasPermission name="student:create">
		欢迎有student:create权限的用户!
	</shiro:hasPermission>

 用java1234/123456登录,该用户没有student:create权限,结果:

  

用jack=123登录,该用户有student:create权限,结果:

  

--------------------------

显示用户身份信息:

<h1>欢迎您!</h1>
	<shiro:hasRole name="admin">
		欢迎有admin角色的用户!<shiro:principal/>
	</shiro:hasRole>
	<shiro:hasPermission name="student:create">
		欢迎有student:create权限的用户!<shiro:principal/>
	</shiro:hasPermission>

用java1234/123456登录, 结果:

  

用jack/123登录,结果:

  

--------------------------------------------

Shiro的会话机制

 用户登录成功后获取用户一些信息, 在LoginServlet.java中添加:

// Shiro的会话机制
			Session session = subject.getSession();
			System.out.println("sessionId: " + session.getId());
			System.out.println("sessionHost: " + session.getHost());
			System.out.println("sessionTimeout: " + session.getTimeout());  // 默认为半个小时

测试:

  

---------------------------

session会话中的数据,在LoginServlet.java中添加:

session.setAttribute("sessionInfo", "session会话中的数据!");

success.jsp

${sessionInfo }
	<hr>

测试:

 

posted @ 2017-05-07 14:26  半生戎马,共话桑麻、  阅读(219)  评论(0)    收藏  举报
levels of contents