前言
最近,开启了Form认证,发现Form账号前面加空格,或者后面加空格都可以登录站点,但是提示未共享。
解决方法
后来bing了很多帖子,发现大家都遇到过类似的问题,问题是由于SPClaimsUtility.AuthenticateFormsUser的方法有个小bug,也就是用户登录名前后有空格,这个方法里并没有trim掉空格,但是做验证的时候,却能通过,同时把用户会话给了带空格用户名的用户,所以当前登录的用户对站点并没有权限,也没有办法加权限。
后来,我们合计了一下,就在用户登录之前,把用户名Trim掉空格,规避一些这个问题。