- 浏览: 80718 次
- 性别:
- 来自: 上海
文章分类
最新评论
Spring_Security_多页面登录配置教程
- 博客分类:
- java
本文转自百度文库:http://wenku.baidu.com/view/425b9b11cc7931b765ce1527.html
Spring Security 多页面登录配置教程
2010-07-05 12:45
SHOP++采用了著名的Spring Security框架技术作为站点权限的认证管理,下面就简要讲解一下多页面登录的配置方式。
(注意:本教程基于spring-security2.0.5版本,其它版本配置方式可能有所区别)
对于Spring-Security的基本配置这里就不作详细介绍了,大家可以参考一下SHOP++源代码。现在网上流传的spring-security配置教程大多都是基于单一登陆模式进行讲解,这与国内普遍应用并不相符,现在国内流行的商城系统、CMS系统、论坛系统基本上都是采用前台与后台分开的登录模式。下面为Spring-security多登录页面模式的配置:
一、配置两个AuthenticationProcessingFilter实例,分别设置两个不同的filterProcessedUrl来处理前后台的请求,这里就完成了登录的成功跳转、失败跳转的配置,实例代码如下:
<!-- filterProcessesUrl 登录处理URL -->
<!-- defaultTargetUrl 登录成功后跳转的默认URL -->
<!-- authenticationFailureUrl 登录失败后跳转的URL -->
<!-- alwaysUseDefaultTargetUrl 是否登录后必须访问default-target-url -->
<!-- 前台用户登陆 -->
<bean id="shopLoginFilter" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
<sec:custom-filter before="AUTHENTICATION_PROCESSING_FILTER" />
<property name="authenticationManager" ref="authenticationManager" />
<property name="filterProcessesUrl" value="/shop/login_action" />
<property name="defaultTargetUrl" value="/shop/member!loginSuccess.action" />
<property name="authenticationFailureUrl" value="/shop/member!loginError.action" />
<property name="alwaysUseDefaultTargetUrl" value="true" />
</bean>
<!-- 后台用户登陆 -->
<bean id="adminLoginFilter" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
<sec:custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
<property name="authenticationManager" ref="authenticationManager" />
<property name="filterProcessesUrl" value="/admin/login_action" />
<property name="defaultTargetUrl" value="/admin/admin!loginSuccess.action" />
<property name="authenticationFailureUrl" value="/admin/admin!loginError.action" />
<property name="alwaysUseDefaultTargetUrl" value="true" />
</bean>
二、对于前后台的注销处理,需要配置两个AuthenticationProcessingFilter实例,分别设置两个不同的filterProcessesUrl来处理前后台的请求,这里就完成了注销后跳转的配置,实例代码如下:
<!-- filterProcessesUrl 注销处理URL -->
<!-- c*****tructor-arg 注销后跳转URL -->
<!-- 前台用户注销 -->
<bean id="shopLogoutFilter" class="org.springframework.security.ui.logout.LogoutFilter">
<sec:custom-filter before="LOGOUT_FILTER" />
<c*****tructor-arg value="/" />
<c*****tructor-arg>
<list>
<bean class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
</list>
</c*****tructor-arg>
<property name="filterProcessesUrl" value="/shop/logout_action" />
</bean>
<!-- 后台用户登陆注销 -->
<bean id="adminLogoutFilter" class="org.springframework.security.ui.logout.LogoutFilter">
<sec:custom-filter position="LOGOUT_FILTER" />
<c*****tructor-arg value="/admin/admin!login.action" />
<c*****tructor-arg>
<list>
<bean class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
</list>
</c*****tructor-arg>
<property name="filterProcessesUrl" value="/admin/logout_action" />
</bean>
三、最后我们只需要配置未登录用户的跳转URL即可,这里我们需重新配置authenticationProcessingFilterEntryPoint,让所有未登录请求都统一跳转到一个Action(或JSP)上,再由此Action根据SavedRequest对象跳转到相应的登录URL(SavedRequest对象是spring-security保存登陆请求信息的对象,可使用getSession("SPRING_SECURITY_SAVED_REQUEST_KEY")方式获取)。
<!-- 将auto-config设置为false, 并配置entry-point-ref。-->
<sec:http auto-config="false" entry-point-ref="authenticationProcessingFilterEntryPoint">
<!-- 配置无需进行权限验证的路径 -->
<sec:intercept-url pattern="/shop/member!login.action" filters="none" />
<sec:intercept-url pattern="/shop/member!loginError.action" filters="none" />
<sec:intercept-url pattern="/admin/admin!login.action" filters="none" />
<sec:intercept-url pattern="/admin/admin!loginError.action" filters="none" />
</sec:http>
<!-- loginFormUrl为前后台统一处理未登录请求的Action地址 -->
<bean id="authenticationProcessingFilterEntryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl" value="/shop/user!login.action" />
</bean>
Action处理代码:
public String login() {
// 从Session中获取SavedRequest对象,并根据请求URL判断是否为后台请求,再跳转到相应登录URL
SavedRequest savedRequest = (SavedRequest) getSession("SPRING_SECURITY_SAVED_REQUEST_KEY");
if (savedRequest != null && savedRequest.getRequestUrl().indexOf("/admin/") >= 0) {
// 跳转到后台登录页面
return "adminLoginAction";
} else {
// 跳转到前台登录页面
return "shopLoginAction";
}
}
对于spring-security的多页面登录还有一些其它的解决方法,就代码量与维护性来说,推荐大家采用以上方法。以上为SHOP++技术教程,来源http://www.shopxx.net。
1.HttpSessionContextIntegrationFilter
/j_spring_security_check,提交登陆信息的URL地址。
自定义form时,要把form的action设置为/j_spring_security_check。注意这里要使用绝对路径,避免登陆页面存放的页面可能带来的问题。
j_username,输入登陆名的参数名称。
j_password,输入密码的参数名称
_spring_security_remember_me,选择是否允许自动登录的参数名称。
可以直接把这个参数设置为一个checkbox,无需设置value,Spring Security会自行判断它是否被选中。
--------------------------------------------------------------------------------------------
4.DefaultLoginPageGeneratingFilter
此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,只能是在演示时做个样子,不可能直接用在实际项目中。
自定义登陆页面
<http auto-config='true'>
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp"
authentication-failure-url="/login.jsp?error=true"
default-target-url="/" />
</http>
--------------------------------------------------------------------------------------------
5.BasicProcessingFilter
此过滤器用于进行basic验证,功能与AuthenticationProcessingFilter类似,只是验证的方式不同。
添加basic认证,去掉auto-config="true",并加上<http-basic />
<http auto-config="true">
<http-basic />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/" access="ROLE_USER" />
</http>
---------------------------------------------------------------------------------------------
6.SecurityContextHolderAwareRequestFilter
此过滤器用来包装客户的请求。目的是在原始请求的基础上,为后续程序提供一些额外的数据。比如getRemoteUser()时直接返回当前登陆的用户名之类的。
---------------------------------------------------------------------------------------------
7.RememberMeProcessingFilter
此过滤器实现RememberMe功能,当用户cookie中存在rememberMe的标记,此过滤器会根据标记自动实现用户登陆,并创建SecurityContext,授予对应的权限。
在配置文件中使用auto-config="true"就会自动启用rememberMe
实际上,Spring Security中的rememberMe是依赖cookie实现的,当用户在登录时选择使用rememberMe,系统就会在登录成功后将为用户生成一个唯一标识,并将这个标识保存进cookie中,我们可以通过浏览器查看用户电脑中的cookie。
---------------------------------------------------------------------------------------------
8.AnonymousProcessingFilter
为了保证操作统一性,当用户没有登陆时,默认为用户分配匿名用户的权限。
在配置文件中使用auto-config="true"就会启用匿名登录功能。在启用匿名登录之后,如果我们希望允许未登录就可以访问一些资源,可以在进行如下配置。
<http auto-config='true'>
<intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
设置成 ROLE_ANONYMOUS 也可以。
<http auto-config='true'>
<intercept-url pattern="/" filters="none" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
filters="none"表示当我们访问“/”时,是不会使用任何一个过滤器去处理这个请求的,它可以实现无需登录即可访问资源的效果,但是因为没有使用过滤器对请求进行处理,所以也无法利用安全过滤器为我们带来的好处,最简单的,这时SecurityContext内再没有保存任何一个权限主体了,我们也无法从中取得主体名称以及对应的权限信息。
---------------------------------------------------------------------------------------------
9.ExceptionTranslationFilter
此过滤器的作用是处理中FilterSecurityInterceptor抛出的异常,然后将请求重定向到对应页面,或返回对应的响应错误代码。
---------------------------------------------------------------------------------------------
10.SessionFixationProtectionFilter
防御会话伪造攻击。
解决session fix的问题其实很简单,只要在用户登录成功之后,销毁用户的当前session,并重新生成一个session就可以了。
<http auto-config='true' session-fixation-protection="none">
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
session-fixation-protection的值共有三个可供选择,none,migrateSession和newSession。默认使用的是migrationSession
---------------------------------------------------------------------------------------------
11.FilterSecurityInterceptor
用户的权限控制都包含在这个过滤器中。
功能一:如果用户尚未登陆,则抛出AuthenticationCredentialsNotFoundException“尚未认证异常”。
功能二:如果用户已登录,但是没有访问当前资源的权限,则抛出AccessDeniedException“拒绝访问异常”。
功能三:如果用户已登录,也具有访问当前资源的权限,则放行。
位于过滤器顶端,第一个起作用的过滤器。
用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把SecurityContext拿出来,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中,供Spring Security的其他部分使用。
用途二,在所有过滤器执行完毕后,清空SecurityContextHolder,因为SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,会受到服务器的线程池机制的影响。
--------------------------------------------------------------------------------------------
2.LogoutFilter
只处理注销请求,默认为/j_spring_security_logout。
用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,然后重定向到注销成功页面。可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。
--------------------------------------------------------------------------------------------
3.AuthenticationProcessingFilter
处理form登陆的过滤器,与form登陆有关的所有操作都是在此进行的。
默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址,form所需的其他参数可以参考:
此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面(可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。
<form action="${pageContext.request.contextPath}/j_spring_security_check" style="width:260px;text-align:center;">
<fieldset>
<legend>登陆</legend>
用户: <input type="text" name="j_username" style="width:150px;" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}"/><br />
密码: <input type="password" name="j_password" style="width:150px;" /><br />
<input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br />
<input type="submit" value="登陆"/>
<input type="reset" value="重置"/>
</fieldset>
</form>
Spring Security 多页面登录配置教程
2010-07-05 12:45
SHOP++采用了著名的Spring Security框架技术作为站点权限的认证管理,下面就简要讲解一下多页面登录的配置方式。
(注意:本教程基于spring-security2.0.5版本,其它版本配置方式可能有所区别)
对于Spring-Security的基本配置这里就不作详细介绍了,大家可以参考一下SHOP++源代码。现在网上流传的spring-security配置教程大多都是基于单一登陆模式进行讲解,这与国内普遍应用并不相符,现在国内流行的商城系统、CMS系统、论坛系统基本上都是采用前台与后台分开的登录模式。下面为Spring-security多登录页面模式的配置:
一、配置两个AuthenticationProcessingFilter实例,分别设置两个不同的filterProcessedUrl来处理前后台的请求,这里就完成了登录的成功跳转、失败跳转的配置,实例代码如下:
<!-- filterProcessesUrl 登录处理URL -->
<!-- defaultTargetUrl 登录成功后跳转的默认URL -->
<!-- authenticationFailureUrl 登录失败后跳转的URL -->
<!-- alwaysUseDefaultTargetUrl 是否登录后必须访问default-target-url -->
<!-- 前台用户登陆 -->
<bean id="shopLoginFilter" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
<sec:custom-filter before="AUTHENTICATION_PROCESSING_FILTER" />
<property name="authenticationManager" ref="authenticationManager" />
<property name="filterProcessesUrl" value="/shop/login_action" />
<property name="defaultTargetUrl" value="/shop/member!loginSuccess.action" />
<property name="authenticationFailureUrl" value="/shop/member!loginError.action" />
<property name="alwaysUseDefaultTargetUrl" value="true" />
</bean>
<!-- 后台用户登陆 -->
<bean id="adminLoginFilter" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilter">
<sec:custom-filter position="AUTHENTICATION_PROCESSING_FILTER" />
<property name="authenticationManager" ref="authenticationManager" />
<property name="filterProcessesUrl" value="/admin/login_action" />
<property name="defaultTargetUrl" value="/admin/admin!loginSuccess.action" />
<property name="authenticationFailureUrl" value="/admin/admin!loginError.action" />
<property name="alwaysUseDefaultTargetUrl" value="true" />
</bean>
二、对于前后台的注销处理,需要配置两个AuthenticationProcessingFilter实例,分别设置两个不同的filterProcessesUrl来处理前后台的请求,这里就完成了注销后跳转的配置,实例代码如下:
<!-- filterProcessesUrl 注销处理URL -->
<!-- c*****tructor-arg 注销后跳转URL -->
<!-- 前台用户注销 -->
<bean id="shopLogoutFilter" class="org.springframework.security.ui.logout.LogoutFilter">
<sec:custom-filter before="LOGOUT_FILTER" />
<c*****tructor-arg value="/" />
<c*****tructor-arg>
<list>
<bean class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
</list>
</c*****tructor-arg>
<property name="filterProcessesUrl" value="/shop/logout_action" />
</bean>
<!-- 后台用户登陆注销 -->
<bean id="adminLogoutFilter" class="org.springframework.security.ui.logout.LogoutFilter">
<sec:custom-filter position="LOGOUT_FILTER" />
<c*****tructor-arg value="/admin/admin!login.action" />
<c*****tructor-arg>
<list>
<bean class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
</list>
</c*****tructor-arg>
<property name="filterProcessesUrl" value="/admin/logout_action" />
</bean>
三、最后我们只需要配置未登录用户的跳转URL即可,这里我们需重新配置authenticationProcessingFilterEntryPoint,让所有未登录请求都统一跳转到一个Action(或JSP)上,再由此Action根据SavedRequest对象跳转到相应的登录URL(SavedRequest对象是spring-security保存登陆请求信息的对象,可使用getSession("SPRING_SECURITY_SAVED_REQUEST_KEY")方式获取)。
<!-- 将auto-config设置为false, 并配置entry-point-ref。-->
<sec:http auto-config="false" entry-point-ref="authenticationProcessingFilterEntryPoint">
<!-- 配置无需进行权限验证的路径 -->
<sec:intercept-url pattern="/shop/member!login.action" filters="none" />
<sec:intercept-url pattern="/shop/member!loginError.action" filters="none" />
<sec:intercept-url pattern="/admin/admin!login.action" filters="none" />
<sec:intercept-url pattern="/admin/admin!loginError.action" filters="none" />
</sec:http>
<!-- loginFormUrl为前后台统一处理未登录请求的Action地址 -->
<bean id="authenticationProcessingFilterEntryPoint" class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
<property name="loginFormUrl" value="/shop/user!login.action" />
</bean>
Action处理代码:
public String login() {
// 从Session中获取SavedRequest对象,并根据请求URL判断是否为后台请求,再跳转到相应登录URL
SavedRequest savedRequest = (SavedRequest) getSession("SPRING_SECURITY_SAVED_REQUEST_KEY");
if (savedRequest != null && savedRequest.getRequestUrl().indexOf("/admin/") >= 0) {
// 跳转到后台登录页面
return "adminLoginAction";
} else {
// 跳转到前台登录页面
return "shopLoginAction";
}
}
对于spring-security的多页面登录还有一些其它的解决方法,就代码量与维护性来说,推荐大家采用以上方法。以上为SHOP++技术教程,来源http://www.shopxx.net。
1.HttpSessionContextIntegrationFilter
/j_spring_security_check,提交登陆信息的URL地址。
自定义form时,要把form的action设置为/j_spring_security_check。注意这里要使用绝对路径,避免登陆页面存放的页面可能带来的问题。
j_username,输入登陆名的参数名称。
j_password,输入密码的参数名称
_spring_security_remember_me,选择是否允许自动登录的参数名称。
可以直接把这个参数设置为一个checkbox,无需设置value,Spring Security会自行判断它是否被选中。
--------------------------------------------------------------------------------------------
4.DefaultLoginPageGeneratingFilter
此过滤器用来生成一个默认的登录页面,默认的访问地址为/spring_security_login,这个默认的登录页面虽然支持用户输入用户名,密码,也支持rememberMe功能,但是因为太难看了,只能是在演示时做个样子,不可能直接用在实际项目中。
自定义登陆页面
<http auto-config='true'>
<intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login.jsp"
authentication-failure-url="/login.jsp?error=true"
default-target-url="/" />
</http>
--------------------------------------------------------------------------------------------
5.BasicProcessingFilter
此过滤器用于进行basic验证,功能与AuthenticationProcessingFilter类似,只是验证的方式不同。
添加basic认证,去掉auto-config="true",并加上<http-basic />
<http auto-config="true">
<http-basic />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/" access="ROLE_USER" />
</http>
---------------------------------------------------------------------------------------------
6.SecurityContextHolderAwareRequestFilter
此过滤器用来包装客户的请求。目的是在原始请求的基础上,为后续程序提供一些额外的数据。比如getRemoteUser()时直接返回当前登陆的用户名之类的。
---------------------------------------------------------------------------------------------
7.RememberMeProcessingFilter
此过滤器实现RememberMe功能,当用户cookie中存在rememberMe的标记,此过滤器会根据标记自动实现用户登陆,并创建SecurityContext,授予对应的权限。
在配置文件中使用auto-config="true"就会自动启用rememberMe
实际上,Spring Security中的rememberMe是依赖cookie实现的,当用户在登录时选择使用rememberMe,系统就会在登录成功后将为用户生成一个唯一标识,并将这个标识保存进cookie中,我们可以通过浏览器查看用户电脑中的cookie。
---------------------------------------------------------------------------------------------
8.AnonymousProcessingFilter
为了保证操作统一性,当用户没有登陆时,默认为用户分配匿名用户的权限。
在配置文件中使用auto-config="true"就会启用匿名登录功能。在启用匿名登录之后,如果我们希望允许未登录就可以访问一些资源,可以在进行如下配置。
<http auto-config='true'>
<intercept-url pattern="/" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
设置成 ROLE_ANONYMOUS 也可以。
<http auto-config='true'>
<intercept-url pattern="/" filters="none" />
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
filters="none"表示当我们访问“/”时,是不会使用任何一个过滤器去处理这个请求的,它可以实现无需登录即可访问资源的效果,但是因为没有使用过滤器对请求进行处理,所以也无法利用安全过滤器为我们带来的好处,最简单的,这时SecurityContext内再没有保存任何一个权限主体了,我们也无法从中取得主体名称以及对应的权限信息。
---------------------------------------------------------------------------------------------
9.ExceptionTranslationFilter
此过滤器的作用是处理中FilterSecurityInterceptor抛出的异常,然后将请求重定向到对应页面,或返回对应的响应错误代码。
---------------------------------------------------------------------------------------------
10.SessionFixationProtectionFilter
防御会话伪造攻击。
解决session fix的问题其实很简单,只要在用户登录成功之后,销毁用户的当前session,并重新生成一个session就可以了。
<http auto-config='true' session-fixation-protection="none">
<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
session-fixation-protection的值共有三个可供选择,none,migrateSession和newSession。默认使用的是migrationSession
---------------------------------------------------------------------------------------------
11.FilterSecurityInterceptor
用户的权限控制都包含在这个过滤器中。
功能一:如果用户尚未登陆,则抛出AuthenticationCredentialsNotFoundException“尚未认证异常”。
功能二:如果用户已登录,但是没有访问当前资源的权限,则抛出AccessDeniedException“拒绝访问异常”。
功能三:如果用户已登录,也具有访问当前资源的权限,则放行。
位于过滤器顶端,第一个起作用的过滤器。
用途一,在执行其他过滤器之前,率先判断用户的session中是否已经存在一个SecurityContext了。如果存在,就把SecurityContext拿出来,放到SecurityContextHolder中,供Spring Security的其他部分使用。如果不存在,就创建一个SecurityContext出来,还是放到SecurityContextHolder中,供Spring Security的其他部分使用。
用途二,在所有过滤器执行完毕后,清空SecurityContextHolder,因为SecurityContextHolder是基于ThreadLocal的,如果在操作完成后清空ThreadLocal,会受到服务器的线程池机制的影响。
--------------------------------------------------------------------------------------------
2.LogoutFilter
只处理注销请求,默认为/j_spring_security_logout。
用途是在用户发送注销请求时,销毁用户session,清空SecurityContextHolder,然后重定向到注销成功页面。可以与rememberMe之类的机制结合,在注销的同时清空用户cookie。
--------------------------------------------------------------------------------------------
3.AuthenticationProcessingFilter
处理form登陆的过滤器,与form登陆有关的所有操作都是在此进行的。
默认情况下只处理/j_spring_security_check请求,这个请求应该是用户使用form登陆后的提交地址,form所需的其他参数可以参考:
此过滤器执行的基本操作时,通过用户名和密码判断用户是否有效,如果登录成功就跳转到成功页面(可能是登陆之前访问的受保护页面,也可能是默认的成功页面),如果登录失败,就跳转到失败页面。
<form action="${pageContext.request.contextPath}/j_spring_security_check" style="width:260px;text-align:center;">
<fieldset>
<legend>登陆</legend>
用户: <input type="text" name="j_username" style="width:150px;" value="${sessionScope['SPRING_SECURITY_LAST_USERNAME']}"/><br />
密码: <input type="password" name="j_password" style="width:150px;" /><br />
<input type="checkbox" name="_spring_security_remember_me" />两周之内不必登陆<br />
<input type="submit" value="登陆"/>
<input type="reset" value="重置"/>
</fieldset>
</form>
发表评论
-
java ZIP压缩工具类
2015-01-28 14:35 976package com.common.util; i ... -
java ftp工具类
2015-01-28 14:33 1430package com.common.util; i ... -
java socket编程
2014-01-02 16:53 1180引用 /** * 工行实名认证处理方法 * ... -
从数据库中读取带换行的字符串
2011-06-01 09:25 7167数据库中的workExp(工作经历)字段是带换行或回车的字符串 ... -
向已获取的list中插入值
2011-08-08 11:23 1991public List getWfList(String id ... -
正则表达式常用验证方法
2011-05-26 15:02 1476function isDigit(s) { var patr ... -
java常用操作方法(六) 远程文件操作 RemoteFileUtil
2011-05-26 14:58 4469package com.jinqiao.util; impo ... -
java常用操作方法(五)金额 MoneyUtil
2011-05-26 14:57 2042package com.jinqiao.util; impo ... -
java常用操作方法(四)数学计算操作 MathUtil
2011-05-26 14:55 8876package com.jinqiao.util; impo ... -
java常用操作方法(三)字符串工具类 StringUtil
2011-05-26 14:52 1841package com.jinqiao.util; impo ... -
java常用操作方法(二)文件操作类 FileUtil
2011-05-26 14:50 4514package com.jinqiao.util; impo ... -
java常用操作方法(一)日期工具类 DateUtil
2011-05-26 14:46 3343/* * Created on 2011-5-26 * ...
相关推荐
配置 - spring-security-config.jar 26 LDAP - spring-security-ldap.jar 26 ACL - spring-security-acl.jar 26 CAS - spring-security-cas.jar 26 OpenID - spring-security-openid.jar 26 测试 - spring-security-...
概述在本教程中,我们将讨论如何使用Spring Security OAuth和Spring Boot实现单点登录 - 单点登录。我们将使用三个独立的应用程序授权服务器 - 这是中央认证机制两个客户端应用程序:使用SSO的应用程序简而言之,当...
配置Spring Security并创建经过身份验证的页面,例如“登录”页面和“管理页面” 。 用于在具有授权角色的数据库上创建安全用户的安全上下文集成。 (本教程使用的是JNDI数据源; <jee:jndi-lookup id=...
Spring Security入门系列教程: 项目部署 开发环境: JDK 1.8 IDEA 2019.2 MySQL 5.7 Node.js 10.15.3 项目使用技术栈: 前端:Vue + Axios 后端:Spring Boot 、 MyBatis-Plus 权限:Spring Security ....... 二、...
## 安装教程 ### 本地部署 1. 通过git下载源码 2. 创建数据库weshop,数据库编码为UTF-8 3. 执行docs/sql/data.sql文件,初始化数据 4. 修改配置中心(weshop-config-server)的database.properties和common....
基于Terracota的Session集群配置教程 Web Frameworks DWR MyFaces JSF Reference Implementation Jakarta Slide GWT Jetspeed2 ICEfaces 其他 Atomikos Transaction Manager Java Open Transaction Manager (JOTM) ...
支持多渠道对接,支付网关自动路由 已对接微信服务商和普通商户接口,支持V2和V3接口 已对接支付宝服务商和普通商户接口,支持RSA和RSA2签名 ...使用spring security实现权限管理 前后端分离架构,方便二次开发
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
│ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...
开发工具:安全框架Spring security、 shiro、Spring boot 3、安全工具和设备(2天) DDos防护、WAF、主机入侵防护等等 4、网站安全工具(1天) 阿里云、云狗、云盾 网站在线检测:http://webscan.360.cn/ ...
ASP.NET 2.0 Security FAQs Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp.net 2.0 WebPart使用经验点滴 革新:.NET 2.0的自定义配置文件体系初探 关于如何在ASP.NET ...
5、基于spring security(jwt) + 用户UUID双重认证。6、基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。7、基于hibernate validator实现的校验框架,支持自定义校验注解。8、提供Request-No的响应header快速...
5、基于spring security(jwt) + 用户UUID双重认证。 6、基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。 7、基于hibernate validator实现的校验框架,支持自定义校验注解。 8、提供Request-No的响应header...