我的系统设计--身份验证和权限控制

需要做个登陆和权限,考虑用struts2的拦截器和包属性来实现。
建立一个public的package,容纳公用的可以开放访问的所有action,返回的jsp页面也放在默认的webroot目录下,可无验证访问。
<!--  公共页面包-->
<package name="public" extends="struts-default">
<action name="index" class="i.tommy.test.action.indexAction">
<result name="success">/index.jsp</result>
</action>
</package>


需要权限控制的定义在一个authority的package
<!-- 需要权限访问包 -->
<package name="tommy" extends="struts-default">
<interceptors>
<interceptor name="author" class="i.tommy.test.interceptor.userLoginInter"/>
</interceptors>
<default-interceptor-ref name="author" />
<global-results>
<result name="login">/login.jsp</result>
</global-results>

<action name="admin" class="i.tommy.test.action.adminAction">
<result name="success">/WEB-INF/web/admin/index.jsp</result>

</action>
</package>


interceptor name="author" 定义一个拦截器负责对session中的值进行判断来完成登陆的检验,当不是合法用户时跳转到login.jsp(webroot目录下可公共访问)。 并设置为此package目录的默认拦截器。拦截器需要实现 Interceptor接口或者abstractinterceptor抽象内。
主要是重写interceptor方法
public String intercept(ActionInvocation invocation) throws Exception
{
System.out.println("----权限拦截器拦截开始---");
ActionContext ctx = invocation.getInvocationContext();
Map session = ctx.getSession();
session.put("user", "admin");/模拟登陆状态
String user = (String) session.get("user");
if (user != null && user.equals("admin"))
{
System.out.println("----Welcome "+user+"--");
return invocation.invoke();
}
ctx.put("tip", "对不起,您没有登录。");
System.out.println("----权限拦截器拦截结束---");
return "login";
}

struts.xml中配置的adminaction 并且设置该action
返回<result name="success">/WEB-INF/web/admin/index.jsp</result>
此处用web-inf是需要把需要权限控制的页面放到webroot/web-inf 防止用户直接在浏览器输入jsp文件URL访问页面。从而达到控制jsp页面登陆的效果。

小弟刚学struts2 都是简单的东西 新手共勉 大侠赐教 喷子滚蛋。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值