在struts2和x2B中区分不同的用户;冬眠
struts.xml在struts2和x2B中区分不同的用户;冬眠,struts2,actioncontext,Struts2,Actioncontext,struts.xml <package name="admin" extends="struts-default" namespace="/admin"> <interceptors> <interceptor class="interceptor.LoginInterceptor" name="loginInterceptor"/> <interceptor-stack name="log
<package name="admin" extends="struts-default" namespace="/admin">
<interceptors>
<interceptor class="interceptor.LoginInterceptor" name="loginInterceptor"/>
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"/>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="index">
<result>/WEB-INF/admin/index.jsp</result>
</action>
actions
.
.
</package>
<package name="secure" extends="struts-default" namespace="/secure">
<interceptors>
<interceptor class="interceptor.LoginInterceptor" name="loginInterceptor"/>
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"/>
<global-results>
<result name="login">/login.jsp</result>
</global-results>
<action name="index">
<result>/WEB-INF/admin/index.jsp</result>
</action>
<action class="actions.LoginAction" name="authenticateUser">
<!-- generate dynamically for success-->
<result name="input">/login.jsp</result>
<result name="error">/login.jsp</result>
</action>
</package>
对不起,我弄错了,我问错了
在我的应用程序Admin和Customer中有两种用户。
我想区分它们,并根据角色动态重定向到特定命名空间操作
目前只有管理员的身份验证功能
我想出了这个解决办法
但我不知道如何将请求url映射到特定名称规范的操作,无论是客户的“安全”还是基于角色的管理员的“管理员”。
否则显示全局异常
admin的所有JSP都位于admin文件夹中,而客户的JSP则位于WEF-INF文件夹的customer文件夹中
我还指定了一些注释,我仍然需要填写,但不知道如何填写。
对于cheking角色,我知道,但对于重定向,我不知道该做什么
我还没有实现这一点。但我有这个想法。
即使是我认为可能的或不可能的。
如果有更好的解决方案,那么您可以告诉我。您在URL映射方面面临的问题是什么,当然我们可以使用spring security来简化此问题,但这是针对spring爱好者的:)。如果将身份验证(登录)和授权(访问资源)分开,您的问题将非常简单。创建一个可公开访问的包(包括登录)、一个用于管理操作的包和一个用于用户操作的包,这些包将包含授权拦截器。这听起来像是一个简单的案例,所以像这样一个简单的解决方案就足够了。《Struts2在行动》一书演示了如何创建这样一个拦截器。您的问题不清楚,请更具体地说明您想要实现什么。你试过什么例子?你好,我更新了我的帖子。请查看并提供任何解决方案。@Rohit在找到解决方案方面做得很好。奇怪的是,我真的很喜欢封闭式结构2问题如果你有时间记录你自己的解决方案,我会投票表决。仅供参考,但也有一些推荐Spring security,对于这个非常简单的案例来说,这太过分了。。。但是,如果你需要更重的认证,那么Spring Security备受吹捧,但要考虑Apache Shiro是否有必要出现。
public String intercept(ActionInvocation invocation) throws Exception {
final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
HttpSession session = request.getSession(true);
Object user = session.getAttribute("user");
if (user == null) {
String loginAttempt = request.getParameter("loginAttempt");
if(!StringUtils.isEmpty(loginAttempt)){
return invocation.invoke();
}
return "login";
} else {
// Check for user role here
// and redirect to action of specific namespace
return invocation.invoke();
}
}