Spring Security4的配置,以及一些吐槽.(二)

浪费了二天去解决生产问题,我滴妈啊.那生产问题代码真是又臭又长,看得人都崩溃了.

在本章完成了登出/记住我/从数据库查询用户权限/获取用户信息.


让我们看一下最新的


	
	
	
	
	
	
	
		
		
		
		
		
		
		
		
		
		
		
	
	
	
	
	
		
			
		
		
	


这里有一个注意点,因为配置了csrf的配置,所以在logout的时候一定要包含一个隐藏域,具体代码如下

	
	


开启记住我功能,需要在登陆的页面上加入一个input,name属性要为remember-me

login,jsp具体代码如下

请输入您的用户名与密码

用户:
密码:

记住我功能默认使用的是cookie,你可以再登陆成功后,查看自己的cookie来查看.


使用数据库来进行登陆验证,可以看到我们在authentication-manager中使用了jdbc-user-service来进行用户的认证.

此外还可以使用ldap来进行,

我这里使用的是默认的数据库权限配置,

默认情况下的三条查询语句为:

			

我们也可以自定,都很简单.只是需要注意 权限一定要以ROLE开头,数据库的列要和查询语句保持一致.即可.


在JSP中获取用户的属性

需要使用到security的tags标签具体如下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="security"%>






首页











	
	

假设我是首页

用户名: ${username }


Java 获取用户和用户权限,

Object principal = SecurityContextHolder.getContext()
		.getAuthentication().getPrincipal();
if (principal instanceof UserDetails) {
	String username = ((UserDetails) principal).getUsername();
	Iterator it = ((UserDetails) principal).getAuthorities().iterator();
	String authority = "";
	while (it.hasNext()) {
		authority = ((GrantedAuthority) it.next()).getAuthority();
		System.out.println("Authority:" + authority);
	}
}


基础配置说完, 下一节讲如果保护方法.


你可能感兴趣的:(Spring4)