首页   注册   登录
 src112159 最近的时间轴更新

src112159

V2EX 第 280322 号会员,加入于 2018-01-06 13:53:15 +08:00
src112159 最近回复了
249 天前
回复了 cjzlol 创建的主题 生活 耳鸣一个多月了,好烦
是身体太虚引起的,我有过这样的经历,去医院检查也没啥毛病。大部分原因是心理压力和营养不够造成的
个人感觉比 MAC 版的 SecureCRT 好用
ZOC7,我现在在用的,推荐试试
348 天前
回复了 heraldic 创建的主题 Linux deepin Linux 确实好用,暂时整机就用它了
PC 装个黑苹果其实还不错,远景上有很多别人做好的引导
就是因为那个返回的 code 的原因,返回 1001 前段直接 logout 了。。。。
@beny2mor

已经找到问题了,谢谢你的帮助哈,。
@beny2mor
@Service
public class MyAccessDecisionManager implements AccessDecisionManager {


@Override
public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
if(null == configAttributes || configAttributes.size() <= 0) {
return;
}
ConfigAttribute c;
String needRole;
for(Iterator<ConfigAttribute> iter = configAttributes.iterator(); iter.hasNext(); ) {
c = iter.next();
needRole = c.getAttribute();
for(GrantedAuthority ga : authentication.getAuthorities()) {
if(needRole.trim().equals(ga.getAuthority())) {
return;
}
}
}
throw new AccessDeniedException("没有操作权限");
}

@Override
public boolean supports(ConfigAttribute attribute) {
return true;
}

@Override
public boolean supports(Class<?> clazz) {
return true;
}
}


----------------------------------------------------------------


@Component
public class MyAccessDeniedHandler implements AccessDeniedHandler {
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) throws IOException, ServletException {
//返回 json 形式的错误信息
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
response.getWriter().println("{\"code\":1001, \"msg\":\""+e.getMessage()+"\"}");
response.getWriter().flush();
}
}


----------------------------------------------------------
是有 AccessDecisionManager 的,无权限的资源也返回了这个 json,现在就是会自己跳转到登录
@beny2mor 这样权限控制好像是没有问题的,但就是会跳转到自定义的登录页面
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
// 由于使用的是 JWT,我们这里不需要 csrf
.csrf().disable()

.exceptionHandling()
.accessDeniedHandler(myAccessDeniedHandler)
.authenticationEntryPoint(unauthorizedHandler)
.and()

// 基于 token,所以不需要 session
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()

.authorizeRequests()

// 允许对于网站静态资源的无授权访问
.antMatchers(
HttpMethod.GET,
"/",
"/*.html",
"/favicon.ico",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/**/*.png",
"/**/*.jpg"
).permitAll()
// 对于获取 token 的 rest api 要允许匿名访问
.antMatchers("/api/auth/**").permitAll()
.antMatchers("/sys_user/**").permitAll()
.antMatchers("/x_mgr/**/*.*").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();

// 添加 JWT filter
httpSecurity
.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
httpSecurity.addFilterBefore(myFilterSecurityInterceptor, FilterSecurityInterceptor.class);
// 禁用缓存
httpSecurity.headers().cacheControl();
}
是跳转到了自定义的登录页。我现在就是在数据库配置了用户-资源权限表,用表里的资源来控制的
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2705 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 13ms · UTC 00:48 · PVG 08:48 · LAX 16:48 · JFK 19:48
♥ Do have faith in what you're doing.