public class JwtFilter
extends org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
AUTHENTICATE_HEADER, AUTHORIZATION_HEADERDEFAULT_SUCCESS_URLDEFAULT_LOGIN_URL, GET_METHOD, POST_METHODappliedPaths, pathMatcher| Constructor and Description |
|---|
JwtFilter() |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
executeLogin(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
进行AccessToken登录认证授权
|
protected boolean |
isAccessAllowed(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
Object mappedValue)
这里我们详细说明下为什么最终返回的都是true,即允许访问
例如我们提供一个地址 GET /article
登入用户和游客看到的内容是不同的
如果在这里返回了false,请求会被直接拦截,用户看不到任何东西
所以我们在这里返回true,Controller中可以通过 subject.isAuthenticated() 来判断用户是否登入
如果有些资源只有登入用户才能访问,我们只需要在方法上面加上 @RequiresAuthentication 注解即可
但是这样做有一个缺点,就是不能够对GET,POST等请求进行分别过滤鉴权(因为我们重写了官方的方法),但实际上对应用影响不大
|
protected boolean |
isLoginAttempt(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
检测Header里面是否包含Authorization字段,有就进行Token登录认证授权
|
protected boolean |
onAccessDenied(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
这里我们详细说明下为什么重写
可以对比父类方法,只是将executeLogin方法调用去除了
如果没有去除将会循环调用doGetAuthenticationInfo方法
|
protected boolean |
preHandle(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
对跨域提供支持
|
createToken, getApplicationName, getAuthcScheme, getAuthzHeader, getAuthzScheme, getPrincipalsAndCredentials, getPrincipalsAndCredentials, isLoginAttempt, isLoginRequest, sendChallenge, setApplicationName, setAuthcScheme, setAuthzSchemecleanup, createToken, createToken, getHost, isPermissive, isRememberMe, onLoginFailure, onLoginSuccessgetSuccessUrl, issueSuccessRedirect, setSuccessUrlgetLoginUrl, getSubject, onAccessDenied, onPreHandle, redirectToLogin, saveRequest, saveRequestAndRedirectToLogin, setLoginUrlgetPathWithinApplication, isEnabled, pathsMatch, pathsMatch, processPathConfigafterCompletion, doFilterInternal, executeChain, postHandledoFilter, getAlreadyFilteredAttributeName, isEnabled, isEnabled, setEnabled, shouldNotFiltergetName, setName, toStringBuilderdestroy, getFilterConfig, getInitParam, init, onFilterConfigSet, setFilterConfigprotected boolean isAccessAllowed(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
Object mappedValue)
isAccessAllowed in class org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilterprotected boolean onAccessDenied(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
throws Exception
onAccessDenied in class org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilterExceptionprotected boolean isLoginAttempt(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
isLoginAttempt in class org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilterprotected boolean executeLogin(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response)
throws Exception
executeLogin in class org.apache.shiro.web.filter.authc.AuthenticatingFilterExceptionCopyright © 2020 Pivotal Software, Inc.. All rights reserved.