如何在struts2中利用session进行权限控制
2010-01-07 10:14
986 查看
1.在登录的session中设置一个属性。
在登录的action中的execute方法中加入以下代码。
@SuppressWarnings("unchecked")
public String execute() throws Exception {
if ("lirongxing".equals(this.getUsername().trim()) && "lrx".equals(this.getPassword().trim())) {
Map map = ActionContext.getContext().getSession();
map.put("user","valid");
return "success";
} else {
this.addFieldError("username", "username or password error");
return "failer";
}
}
在这里我们假设用户名和密码分别为“lirongxing”和“lrx”,即可通过验证,当然在实际开发中是需要到数据库中去查询的。先取得map,在map中设置一个值,其实就是在session中设置了一个值。
2.写一个控制器类。
public class AuthInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map map = invocation.getInvocationContext().getSession();
if (map.get("user") == null) {
return Action.LOGIN;
} else {
return invocation.invoke();
}
}
}
注意:这里的map其实是struts2将session转化而来的,map里装的就是session里的东西。如果map中的user为空,说明没有进行登录。
3.配置struts.xml文件
<struts>
<package name="struts" extends="struts-default" >
<interceptors>
<interceptor name="authInterceptor" class="cn.com.showd.interceptor.AuthInterceptor"/>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="authInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!--<default-interceptor-ref name="myInterceptorStack"/>-->
<global-results>
<result name="login">/login/login.jsp</result>
</global-results>
<action name="login" class="cn.com.showd.action.LoginAction">
<result name="input">/login/login.jsp</result>
<result name="success">/register.jsp</result>
<result name="failer">/login/login.jsp</result>
</action>
<action name="register" class="cn.com.showd.action.RegisterAction" method="register">
<result name="success">/success.jsp</result>
<result name="input">/register.jsp</result>
<interceptor-ref name="myInterceptorStack"/>
</action>
</package>
</struts>
注意:这里不能配置<default-interceptor-ref name="myInterceptorStack"/>,因为这样配置会拦截所有的action,包括权限验证的Action,使得其永远不能登录,造成死循环。
在登录的action中的execute方法中加入以下代码。
@SuppressWarnings("unchecked")
public String execute() throws Exception {
if ("lirongxing".equals(this.getUsername().trim()) && "lrx".equals(this.getPassword().trim())) {
Map map = ActionContext.getContext().getSession();
map.put("user","valid");
return "success";
} else {
this.addFieldError("username", "username or password error");
return "failer";
}
}
在这里我们假设用户名和密码分别为“lirongxing”和“lrx”,即可通过验证,当然在实际开发中是需要到数据库中去查询的。先取得map,在map中设置一个值,其实就是在session中设置了一个值。
2.写一个控制器类。
public class AuthInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map map = invocation.getInvocationContext().getSession();
if (map.get("user") == null) {
return Action.LOGIN;
} else {
return invocation.invoke();
}
}
}
注意:这里的map其实是struts2将session转化而来的,map里装的就是session里的东西。如果map中的user为空,说明没有进行登录。
3.配置struts.xml文件
<struts>
<package name="struts" extends="struts-default" >
<interceptors>
<interceptor name="authInterceptor" class="cn.com.showd.interceptor.AuthInterceptor"/>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="authInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!--<default-interceptor-ref name="myInterceptorStack"/>-->
<global-results>
<result name="login">/login/login.jsp</result>
</global-results>
<action name="login" class="cn.com.showd.action.LoginAction">
<result name="input">/login/login.jsp</result>
<result name="success">/register.jsp</result>
<result name="failer">/login/login.jsp</result>
</action>
<action name="register" class="cn.com.showd.action.RegisterAction" method="register">
<result name="success">/success.jsp</result>
<result name="input">/register.jsp</result>
<interceptor-ref name="myInterceptorStack"/>
</action>
</package>
</struts>
注意:这里不能配置<default-interceptor-ref name="myInterceptorStack"/>,因为这样配置会拦截所有的action,包括权限验证的Action,使得其永远不能登录,造成死循环。
相关文章推荐
- struts2如何使用拦截器进行用户权限控制实例
- struts2如何进行权限控制
- struts2如何使用拦截器进行用户权限控制
- struts2中使用session和拦截器控制权限
- Git Repo Gerrit方式下如何进行代码读权限控制
- struts2中定义拦截器对访问权限进行控制
- 如何在vs2005中利用vss6.0进行版本控制
- 如何利用Xcode中使用Git进行源码版本控制
- [session] 欺诈的潜伏性: 如何利用大数据进行反欺诈检测
- ssh项目整合shiro时,在struts2的action中使用shiro的注解进行权限控制时,NoSuchMethodException:com.sun.proxy.$Proxy26
- Struts2 利用拦截器 interceptor 控制登陆和访问权限
- 利用ORACLE对数据权限进行控制
- Spring Security-利用URL地址进行权限控制
- 使用struts2进行文件下载以及下载权限控制的例子
- Linux操作系统下如何利用SSH进行远程控制
- Struts2利用拦截器实现权限控制
- spring security2中如何进行同步session控制
- 使用Struts2拦截器进行权限控制
- 利用客户端代理和SOAPHeader进行Webservice权限控制
- 利用struts2的json返回方式来控制jquery.validate的remote框架,进行表单验证