Coder Social home page Coder Social logo

Comments (4)

C3Stones avatar C3Stones commented on July 23, 2024

在博客 SpringBoot + SpringSecurity + Mybatis-Plus + JWT实现分布式系统认证和授权 中,权限设计为:用户 拥有 角色,角色 拥有 权限。
UserDetailsService实现类中,将用户的角色保存到UserDetails实体中的目的是为了:当请求接口的权限注解@PreAuthorize()中存在hasRole('***')时,会根据UserDetails中的角色集合自动判断是否有权限。
当然,权限注解@PreAuthorize()中也可能存在hasPermission('***')时,会进入到PermissionEvaluator的实现类中,进行权限标识判断。

from blog.

hx-hexing avatar hx-hexing commented on July 23, 2024

curl -X POST "http://127.0.0.1:8080/login/submit?username=guest&password=123456"
请问: 这里的login/submit的接口是自定义的吗?

from blog.

C3Stones avatar C3Stones commented on July 23, 2024

在系统核心配置类SysSecurityConfig的方法configure中,配置了登录、登出、权限、跨域、Session等相关参数。

/**
 * 系统安全核心配置
 * 
 * @author CL
 *
 */
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true) // 开启方法权限注解
public class SysSecurityConfig extends WebSecurityConfigurerAdapter {

	// ......

	/**
	 * 安全权限配置
	 */
	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.authorizeRequests() // 权限配置
				.antMatchers(JWTConfig.antMatchers.split(",")).permitAll()// 获取白名单(不进行权限验证)
				.anyRequest().authenticated() // 其他的需要登陆后才能访问
				.and().httpBasic().authenticationEntryPoint(userNotLoginHandler) // 配置未登录处理类
				.and().formLogin().loginProcessingUrl("/login/submit")// 配置登录URL
				.successHandler(userLoginSuccessHandler) // 配置登录成功处理类
				.failureHandler(userLoginFailureHandler) // 配置登录失败处理类
				.and().logout().logoutUrl("/logout/submit")// 配置登出地址
				.logoutSuccessHandler(userLogoutSuccessHandler) // 配置用户登出处理类
				.and().exceptionHandling().accessDeniedHandler(userAccessDeniedHandler)// 配置没有权限处理类
				.and().cors()// 开启跨域
				.and().csrf().disable(); // 禁用跨站请求伪造防护
		http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); // 禁用session(使用Token认证)
		http.headers().cacheControl(); // 禁用缓存
		http.addFilter(new JWTAuthenticationFilter(authenticationManager())); //// 添加JWT过滤器
	}
}

from blog.

hx-hexing avatar hx-hexing commented on July 23, 2024

from blog.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.