用户登录验证的工具,如 SSO、登录后的 Session 处理等。
注:内部的一些成员变量通过 BroWorkbenchBootStrap 初始化。
| Modifiers | Name | Description |
|---|---|---|
static List<SsoInterceptor> |
ssoInterceptors |
可用的拦截器列表,通过方法 addSsoInterceptor 设置 |
| Type | Name and description |
|---|---|
static void |
addSSOInterceptors(Map interceptor)添加 SSO 拦截器,可以在应用中(如 BootStrap)添加自定义的SSO的拦截器。 |
static void |
addSsoInterceptor(SsoInterceptor interceptor)添加 SSO 拦截器 |
static boolean |
authenticate(String username, String password)验证用户名、密码是否正确 |
static Integer |
countOnlineUser()计算在线用户数 |
static javax.servlet.http.HttpSession |
createAuthedSessionForEvent(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, org.springframework.security.core.Authentication auth, String username, org.springframework.context.ApplicationEvent event)在 SecurityEventListener 中捕获用户登录后,初始化 Session、Cookie |
static String |
getMobileUrl(javax.servlet.http.HttpServletRequest request)用户登录成功后,检查 SecurityEventListener.sessions 中的 session 的有效性,并处理只允许在一个地方登录的情况 |
static boolean |
isMobileProxy(javax.servlet.http.HttpServletRequest request) |
static javax.servlet.http.HttpSession |
login(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String username, String password)根据用户名、密码进行验证,以执行登录。 |
static javax.servlet.http.HttpSession |
login(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, String username)根据用户名直接登录 |
| Methods inherited from class | Name |
|---|---|
class Object |
Object#wait(long, int), Object#wait(long), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
可用的拦截器列表,通过方法 addSsoInterceptor 设置
添加 SSO 拦截器,可以在应用中(如 BootStrap)添加自定义的SSO的拦截器。
示例:
AuthenticationUtils.addSSOInterceptors([
// 名称(必须)
name: "XXXX",
// 优先级(可选):默认都为 100,数字越大表示优先级越低(执行顺序靠后);
// 一般建议通过 url 传参的优先级提前(如 rtx),而通过 cookie 传 token 的优先级靠后(如 ltpa)
priority: 100,
// 是否可以被后面的拦截器覆盖(可选):如拦截器 A 先执行,返回用户 a,但可被覆盖;继续执行拦截器 B,返回用户 b,则将用 b 进行 sso
overwritable: false,
// SSO 接口(可选):返回用户名则表示 sso 成功,或者返回一个 Map 包含用户名和重定向的 URL,或者返回一个仅包含失败并重定向 URL 的 Map
before: { HttpServletRequest request, HttpServletResponse response ->
// 成功并返回用户名
return request.getParameter("username")
// 成功并返回用户名和重定向 URL,如首页或某个 URL 参数里的地址
return [username: request.getParameter("god"), redirect: request.getParameter("redirect")]
// 失败,但返回重定向额 URL,如第三方的登录页
return [redirect: "http://www.bropen.com.cn"]
\},
// SSO 成功、并创建用户 session 后的事件(可选),可以处理处理善后,如设置一些额外的 cookie 或者 session 属性等
after: { HttpServletRequest request, HttpServletResponse response, String username ->
\},
// 登录成功后执行的事件(可选),在 after 之前执行;此外,如果仅仅想要在用户登录后做些事情,可以设置一个不包含 before、after 的拦截器
login: { HttpServletRequest request, HttpServletResponse response, String username ->
\},
// 用户点注销时执行的事件(可选),可以用来处理联合注销(同时注销掉其他系统)
logout: { HttpServletRequest request, HttpServletResponse response ->
\},
])
interceptor - 拦截器,可以包括 name(REQUIRED)、before、after、logout 等属性添加 SSO 拦截器
验证用户名、密码是否正确
计算在线用户数
在 SecurityEventListener 中捕获用户登录后,初始化 Session、Cookie
username - 用户切换操作成功后,切换后的用户名event - 用户切换或者登录事件(或其他事件)用户登录成功后,检查 SecurityEventListener.sessions 中的 session 的有效性,并处理只允许在一个地方登录的情况
根据用户名、密码进行验证,以执行登录。
根据用户名直接登录