2017-05-26 42 views
0

我有一个IdentityServer 4为一组单独的MVC应用程序提供身份。每个MVC应用程序都提供了一组不同的功能。如果用户登录,向用户询问IdentityServer 4,如果不是,则保持匿名?

我把Authorize属性放在MVC应用程序的动作上。如果未经身份验证的用户访问该操作,则会将该用户发送到IdentityServer的登录页面,并通过身份验证或拒绝权限。

我该如何让匿名用户进入操作,但仍然击中IdentityServer以确定用户是否已通过身份验证(例如,通过在其中一个其他MVC应用中执行Authorize操作)?

回答

0

根据定义,[Authorize]属性不会允许匿名用户...

当您标记的操作方法与AuthorizeAttribute,访问该 操作方法仅限于用户谁是身份验证和 授权。 https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx

...所以,如果你想允许匿名用户访问它,你将无法使用该属性标记动作/控制器。

如果您只是想知道用户是否通过了该操作,您可以查看他们的ClaimsPrincipal,可从控制器访问。有一个方便的快捷方式,您可以从控制器操作中访问User对象。

+0

谢谢Mashton。我试图找到授权的正确选择。我想要这种情况:用户登录到站点1,然后首次访问站点2上的操作。站点2操作应该对匿名用户和授权用户都可访问,但根据经过身份验证的状态将显示稍微不同。现在,当用户首次访问站点2时,除非他们使用Authorize属性进行操作,否则ClaimsPrincipal将不会有任何用户详细信息。我想从IdentityServer填充这些用户详细信息。 –

相关问题