项目本身是用VS2013新建的mvc5项目改吧改吧再把程序包升级而Identity的验证我是在Action前面加 [Authorize]来完成的默认项目只有登陆与否的验证
因此之后我用RoleManager新建了些角色并把用户添加到角色里
角色的增删什么的在网页上都能正常显示正常增删到此为止 [Authorize]对用户是否登陆的验证都还一切正常但是接下来
我把 验证改成了 [Authorize(Roles="admin")]之后
他就开始报数据库连接错误,
而且报的是 SQLExpress 数据库文件自动创建错误!!
......虽然Identity确实用的是EFcodefirst吧,但它创建数据库的连接字符串早就被我指向了机器上的mssqlserver
所以完全不能理解是什么地方还指着express数据库的
还有些别的测试,例如User.IsInRole("admin")这个方法也会报同样的错误
给我的感觉就是身份验证只涉及user的地方一切正常,但是涉及role的地方,就会有问题整个通宵都在研究这个东西,百度提出的症状最接近的解决方案却是MVC4的让人完全无法下手
求众神解救....

解决方案 »

  1.   

    真是要命,睡觉时梦里都是这个
    今天从各处检查了
    Identity的claim里确实包含了role信息,证明登陆的时候是成功写入cookie了的
    但就是读取的时候,明明从cookie里读就行了,为什么要去动数据库呢
    而且最最最奇葩的是Authorize只读user信息就一切ok.[Authorize(User="XXXX")]这个写法就能通过
    我真想去看看[Authorize]这个标签的源代码到底执行了一套什么
      

  2.   

    发现原因
    开着角色管理器就会出这个问题
    把    <roleManager enabled="true" />删了立马解决具体原因不明